MVC 在视图之间传输数据
我刚刚开始学习 MVC,并试图了解它是如何工作的。
我不想将用户发送到所有编辑、插入和列表操作的不同视图。
在我的示例应用程序中,视图包含项目列表,列表下方有一个带有操作“{Controller}/Create”的表单(用于插入新项目),但没有创建视图。
当用户插入新项目时,它会使用 httpverb post 发布到 Create 操作,并创建该项目并使用 RedirectToAction 方法返回到 List 操作。
但我无法以这种方式向用户显示任何消息(错误、信息等),因为我无法在“创建”操作和“列表”操作之间传递数据。我怎样才能做到这一点?
I just started to learn MVC and am trying to understand how it works.
I don't want to send users to different views for all edit, insert and list operations.
In my sample application a View contains a list of items and below the list there is a form (for inserting new items) with action "{Controller}/Create" but there is no Create View.
When a user inserts a new item it posts to the Create action with httpverb post and creates the item and returns back to the List action with RedirectToAction method.
But I can not show any message(error, information etc) to the user in this style because I can not pass data between Create action and List action. How can I do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要使用 Post Redirect Get PRG 模式。
请阅读 Kazi Manzur Rashid 撰写的这篇博文中的使用 PRG 模式进行数据修改部分。
http: //weblogs.asp.net/rashid/archive/2009/04/01/asp-net-mvc-best-practices-part-1.aspx
此方法使用 TempData 来维护重定向之间的 ModelState 数据。
这是您的
Index
操作方法。这是您的
Index
视图。ImportModelStateFromTempData
和ExportModelStateToTempData
属性有助于模型迁移
状态重定向之间的错误。这个
<% ViewContext.FormContext.ValidationSummaryId = "valSumCreateForm"; %>
将 MVC 表单与其相应的验证摘要相关联。您也可以在这里查看我对此的另一个答案。
ViewModel 与 ASP.NET MVC2 中的 SelectList 绑定
如果您有任何疑问,请告诉我。
-索伊
You need to use Post Redirect Get PRG pattern.
Please read this Use PRG Pattern for Data Modification section in this blog post by Kazi Manzur Rashid.
http://weblogs.asp.net/rashid/archive/2009/04/01/asp-net-mvc-best-practices-part-1.aspx
This approach uses
TempData
to maintainModelState
data between redirects.And here is your
Index
action method.And here is your
Index
view.ImportModelStateFromTempData
and
ExportModelStateToTempData
attributes helps transfer model
state errors between redirects. This
<% ViewContext.FormContext.ValidationSummaryId = "valSumCreateForm"; %>
associates the MVC Form with its corresponding Validation Summary.You can check another answer by me on this here as well.
ViewModel with SelectList binding in ASP.NET MVC2
Let me know if you have any question.
-Soe
大多数 MVC 框架都能够在下一个请求时临时存储少量数据,就是为了这个目的。在 ASP.NET MVC 中,它称为 TempData,在 Rails 中,它称为 :flash 等。
Most MVC frameworks have the ability to temporarily store a small bit of data just through the next request, for just this purpose. In ASP.NET MVC its called TempData, in Rails it's called :flash, etc.
本文介绍如何使用TempData:
This article explains how to use TempData: