0

在 asp.net MVC 应用程序中,我们有这样的机制,当我们提交表单并且值有任何问题(验证失败)时,表单会显示回来并保持旧值。它是怎么发生的?这些值保存在哪里?或者他们从 FormCollection 收集。

将获得帮助。

问候帕米德

4

3 回答 3

0

这实际上取决于您如何设置控制器操作和视图,因为 ASP.NET MVC 在多个位置查找值。

您认为它使用 FormCollection 的假设有点错误,因为 FormCollection 是您的控制器 Action 作为参数接收的东西,并且与您的 View 完全分开,其中的值实际上最终被显示出来。

在 1.0 中,默认情况下,视图的编辑模板在大多数 HtmlHelpers 上使用第二个参数,例如:

<%=Html.Textbox("Title", Model.ID)%>

这将从绑定的模型对象中提取旧值。因此,如果您显式验证失败并返回 View(object),则将从该对象中提取值。不过,如果您明确未能通过验证,例如:

if (ModelState.IsValid == false)
{
    return View();
}

那么 HtmlHelper 代码可能会导致错误,因为没有绑定模型。

如果您完全不使用第二个参数,例如:

<%=Html.Textbox("Title")%>

该值将从帖子 (Request.Form) 值中提取。

于 2009-10-30T13:11:06.003 回答
0

One way to do it is to use ModelState.AddModelError

A good tutorial on MVC Error handling can be found here

于 2009-10-30T13:17:38.283 回答
0

您可以通过返回带有 tha 数据的视图来做到这一点

if (ModelState.IsValid == false) 
{
return View(X);
}

X 是你需要返回的数据

于 2016-04-03T15:52:43.627 回答