我遇到了一個問題,我期待Html.HiddenFor從我的模型中解析id,並發現ModelStateCollection是從查詢參數,發佈數據以及您的模型(如這裏討論的https://stackoverflow.com/a/8749419/910348)。MVC處理lambda for HiddenFor與DisplayFor不同
但我不明白的是爲什麼Html.DisplayFor解析不同於HiddenFor。這裏是我的代碼:
// Model
public class FooModel
{
public int id { get; set; }
}
// Controller
public ActionResult Foo(int id)
{
var model = new FooModel { id = 111 };
return View(model);
}
// Form
@model MVCProject.Models.FooModel
@using (Html.BeginForm())
{
<fieldset>
<legend>FooModel</legend>
@Html.HiddenFor(model => model.id)
<p>ID: @Html.DisplayFor(model => model.id)</p>
<p><input type="submit" value="Save" /></p>
</fieldset>
}
的請求/家庭產生的HTML /美孚/ 999:
<input data-val="true" data-val-number="The field id must be a number."
data-val-required="The id field is required." id="id" name="id"
type="hidden" value="999" />
<p>ID: 111</p>
這是預期的行爲HiddenFor和DisplayFor解決他們的lambda表達式爲不同的值?爲什麼?