相关疑难解决方法(0)

为什么MVC在GET上使用Modelstate而非提供的Model

当MVC运行时ActionMethod,它将填充ModelState字典并使用a ModelBinder来构建ActionMethod参数(如果有的话).它这样做是两个GETPOST.这是有道理的.

ActionMethod成功已经跑了,视图是使用所提供的剃刀,这在我的情况下,使用尽可能多的呈现HtmlHelper通话成为可能.到现在为止,您可能会想,"我知道MVC是如何工作的".等等,我到了那里.

当我们使用例如@Html.TextFor(m => m.Name)MVC时,使用可以在这里呈现标记的代码.

有趣的部分是在我们找到的文件的末尾:

switch (inputType)
{
    case InputType.CheckBox:
        // ... removed for brevity
    case InputType.Radio:
    // ... removed for brevity
    case InputType.Password:
    // ... removed for brevity
    default:
        string attemptedValue = 
               (string)htmlHelper.GetModelStateValue(fullName, typeof(string));
        tagBuilder.MergeAttribute("value", attemptedValue ?? 
               ((useViewData) 
                  ? htmlHelper.EvalString(fullName, format) 
                  : valueParameter), isExplicitValue);
        break;
} 
Run Code Online (Sandbox Code Playgroud)

这意味着它Modelstate用于获取提供的值Model.这对于a是有意义的,POST因为当存在验证错误时,您希望MVC使用用户已经提供的值来呈现视图.文档还说明了这种行为,StackOverflow上有几篇帖子证实了这一点.但它只是为说明POST,如能上可以看到这个线程,例如

但是,当为一个视图渲染时,也会使用此代码 …

c# asp.net-mvc modelstate razor

5
推荐指数
1
解决办法
208
查看次数

MVC3 Razor ViewData

我有一个在线表格.例如,它要求名字和姓氏.当他们提交时,我将他们发送到另一个视图.第二个视图还有一些文本框(密码,电子邮件地址,用户名),但它也有名字和姓氏.如果他们填写第一个表格并填写名字/姓氏,我希望第二个表格显示这些值,因为他们已经填写了.

在第一种形式中,我将所有填写的信息放入TempData ["entry"]

在第二种形式我正在做这个检查.

        if (TempData["entry"] != null)
        {
            var _model = (AccountInformationModel)TempData["entry"];

            ViewData["_firstName"] = _model.NameFirst;
            ViewData["_lastName"] = _model.NameLast;
        }

        return View("Register");
Run Code Online (Sandbox Code Playgroud)

我想在我看来,我对如何在文本框中显示这些数据感到困惑.在我看来,我有这个,但它似乎没有工作.

       <div class="editor-label">
            @Html.LabelFor(m => m.FirstName)
        </div>
        <div class="editor-field">
            @Html.TextBox("FirstName", ViewData["FirstName"])
            @Html.ValidationMessageFor(m => m.FirstName)
        </div>
Run Code Online (Sandbox Code Playgroud)

显然是......

   @Html.TextBox("FirstName", ViewData["FirstName"])
Run Code Online (Sandbox Code Playgroud)

不工作..

razor asp.net-mvc-3

0
推荐指数
1
解决办法
3万
查看次数

标签 统计

razor ×2

asp.net-mvc ×1

asp.net-mvc-3 ×1

c# ×1

modelstate ×1