次のモデルを定義したASP.NETMVC3プロジェクトに取り組んでいます。
public class Model{
[Key]
int Id { get; set; }
int MappedId { get; set; }
}
このモデルは、次のようにControllerから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)
}
奇妙なことに、ビューに渡されたときにモデルプロパティの値が異なっていても、両方の非表示の入力が同じ値を取得します。たとえば、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">
モデル.Idがビューに渡されたときに異なる値を持っている場合でも、Html.HiddenFor(model => model.Id)が値をmodel.MappedIdと同じ値に設定する理由について誰かが知っていますか?