我的工作,我已經定義了下面的模型一個ASP.NET MVC3項目:爲什麼@ Html.HiddenFor爲指定的其他模型屬性設置值?
public class Model{
[Key]
int Id { get; set; }
int MappedId { get; set; }
}
這個模型是從控制器到Razor視圖過去了,如下:
public class Controller:Controller{
public ActionResult Edit(int id) {
Model model = repository.Get(id);
return View(model);
}
}
模型屬性渲染視圖:
@using(Html.BeginForm()) {
@Html.HiddenFor(model => model.Id);
@Html.HiddenFor(model => model.MappedId)
}
什麼奇怪的是,兩個隱藏的投入得到相同的值,即使模特屬性有傳遞給View的值不同。例如。如果Model.Id具有值0和Model.MappedChannelId具有值7,兩個隱藏的輸入被設定爲相同的值7:
<input id="Id" class="valid" type="hidden" value="7" name="Id" data-val-required="The Id field is required." data-val-number="The field Id must be a number." data-val="true">
<input id="MappedId" class="valid" type="hidden" value="7" name="MappedId" data-val-required="The MappedId field is required." data-val-number="The field MappedId must be a number." data-val="true">
任何人是否有關於爲什麼Html.HiddenFor(型號=>模型的想法。 Id)將該值設置爲與model.MappedId相同的值,即使model.Id在傳遞給View時有不同的值?
這是不正常的。我懷疑,也許你的價值觀在它們達到渲染引擎之前就已經改變了。檢查'返回視圖(模型)'語句中的模型狀態,然後再次檢查一次它在視圖中命中'@Html ...'語句。 –