- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 ASP.NET MVC 项目 Controller 中,我有一个
return RedirectToAction("CreatePerson", "Home")
这个 View 是一个创建一个人并且工作正常的表单。但是,我想 RedirectToAction 并使用从为系统创建用户的表单收集的数据预填充表单。
如何将 CreateUser 表单中的数据传递到 CreatePerson 表单中?
我知道我可以使用参数,但如果大多数时候我调用 CreatePerson View 而不需要这些参数,这真的是最好的方法吗。
如能提供正确方向的任何帮助,我们将不胜感激。
最佳答案
您不能使用 RedirectAction
发送数据。那是因为您正在执行 301
重定向,然后返回到客户端。
所以最好使用 TempData
假设您将拥有具有以下属性的 createperson
模型:
public class CreatePersonData
{
public string name {get; set;}
public string address {get; set;}
}
现在填充model
并存储在TempData
CreatePersonData person=new CreatePersonData();
person.name="SomeName";
person.address="SomeAddress";
TempData["person"]=person;
return RedirectToAction("CreatePerson", "Home")
现在在接收时,只需从 tempdata
接收它,并将填充的 model
传递给 view
public ActionResult CreatePerson()
{
CreatePersonData person=new CreatePersonData()
var loadPerson= TempData["person"];
person = loadPerson;
return View(person);
}
更新
由于@StephenMuecke 强调使用 TempData
丢失数据,您可能需要对 TempData 使用 .Keep
或 .Peek
以保留 future 请求的值(value)
例如:
使用 .Peek
//PEEK value so it is not deleted at the end of the request
var loadPerson= TempData.Peek("person");
或使用.Keep
//get value marking it from deletion
var loadPerson = TempData["person"];
//later on decide to keep it
TempData.Keep("person");
或者如@Stephen 所说,只需传递 id
并从 database
user
例如:
return RedirectToAction("CreatePerson", "Home", new { ID = User.ID });
现在在您的 CreatePerson
ActionResult
中,只需从数据库中获取它,如下所示:
public ActionResult CreatePerson(int ID)
{
CreatePersonData person=new CreatePersonData();
var user=(from u in tbl_user select u where u.ID=ID);
person.name=user.name;
person.address=user.address;
return View(person);
}
更新 2
您可以将上述两种方法结合起来,例如将数据存储在 TempData
中并将 ID
与 routeValues
一起传递并检查 TempData
不为空,然后回退到使用 ID
方法检索数据。
例如:
public class CreatePersonData
{
public string Id{get; set;}
public string name {get; set;}
public string address {get; set;}
}
public ActionResult CreatePerson(int ID)
{
CreatePersonData person=new CreatePersonData();
var loadPerson=(CreatePersonData)TempData.Peek("person"); //cast the object from TempData
if(loadPerson!=null && loadPerson.Id==ID)
{
person=loadPerson;
}
else
{
var user=(from u in tbl_user select u where u.ID=ID);
person.name=user.name;
person.address=user.address;
}
return View(person);
}
关于c# - 是否可以在不使用 ASP.NET MVC 项目中的参数的情况下通过 RedirectToAction 传递数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32174093/
这是一些 html
任何人都知道如何制作一个方法(我会把它放在一个扩展类中),它只使用表达式(没有魔术字符串)来做与 mvc 的 RedirectToAction 相同的事情。 所以不要写这样的东西: Redirect
我将通过一个简单的示例展示我正在尝试做什么。 我有路线 routes.MapRoute("", "Message", new { con
我有以下代码: Controller : public ActionResult Step1() { return View(); } [AcceptVerbs(HttpVerbs.P
RedirectToAction 不显示 View 。 // Go populate and display PDF using XML file DoPDF(stXML); } Up
我有 2 个 MVC 项目。其中之一是 API,我想从这个 API 将数据传递到同一解决方案中的另一个项目。怎么可能? 我在 Controller 的头部添加了引用 public class Pros
注意:不是 RedirectToAction() 导致了问题,而是在 web.config 中重写规则 原始问题:使用 RedirectToAction() 时出现奇怪的行为,我无法在本地重现(调试)
为什么这不起作用。当我在我的 Create 方法中重定向时,它一直告诉我编辑需要一个 EditStudyModel。重定向应该执行 get,对吗? public ViewResult Crea
我最近更新了我们工作中的 MVC 2 项目以使用区域,但是我在使用 RedirectToAction 方法时遇到了一点问题。 在我们的区域之外,我们仍然有一些 Controller 等。这些 Cont
有什么区别: public ActionResult logOff() { FormsAuth.SignOut(); return RedirectToAction("index",
我的 MVC 代码哪里做错了?索引 View 包括一个提交给自身的表单,我想要的是 Controller 处理提交的表单然后返回到 View 。 实际发生的是表单被正确处理,但返回的 View 就像什
我有一个从 anchor 调用的操作,Site/Controller/Action/ID,其中 ID 是一个 int。 稍后我需要从 Controller 重定向到同一个 Action。 有没有聪明的
我是asp.net MVC的初学者 我有一个像这样的人类 public partial class Person { public int Id { get; set; } publi
我有一个场景,我在 View 页面上并调用 Controller A 中的操作方法,该方法通过 RedirectToAction 返回调用 Controller B 中的另一个操作,并且此操作返回我已
我正在使用 ASP.NET MVC 3。 我编写了一个辅助类,如下所示: public static string NewsList(this UrlHelper helper) { ret
我已经设置了一些区域,但我不确定如何通过 RedirectToAction 方法重定向到它们。似乎没有我可以提供给它的任何 Area 参数。 谢谢 最佳答案 这也行: return RedirectT
我正在开始使用 ASP.Net core MVC 3.1,并且有一个名为 Foo 的区域: endpoints.MapAreaControllerRoute( name: "Foo",
如果用户登录成功,我会尝试重定向用户,但我页面上的代码似乎阻止重定向工作。如果我删除下面的 jQuery,重定向就会起作用。有人可以告诉我如果我做错了什么吗?谢谢 我有以下操作: [AcceptVer
所以我目前正在开发一个网页,其中有一个包含一些表格数据的表格,表格数据的每一行都有一个按钮,负责启动一个进程,当我单击其中一个按钮时,它会触发一个ajax调用。一旦ajax调用完成,它就会更新网页上的
当调用 Html.DisplayNameFor 时,我们只提供一个 lambda 表达式来呈现,例如,通过 item => Model.Name 呈现学生姓名。由于编译时检查,这种方法非常好。 如何使
我是一名优秀的程序员,十分优秀!