2013-03-13 16 views
0

我有一個模型包含文件XSID(Guid)和ID(nvarchar),現在我想用@Html編輯ID值.EditorFor(model => model.ID)但它無法獲得正確的值,它也獲得了XSID的值。但@ Html.DisplayFor(model => model.ID)可以獲得正確的值。 我不知道爲什麼?@ Html.EditorFor(model => model.ID)無法顯示正確的值

@using Student.Resource; 
@using M = Student.Model; 
@model M.Stu_XS 

    <ul class="cur"> 
      <li class="line"> 
       <label> 
        @Stu_XS.ID: 
       </label> 
       <span> 
       @Html.HiddenFor(model => model.XSID) 
       @Html.DisplayFor(model => model.ID) 
       @Html.EditorFor(model => model.ID) 
       @Html.ValidationMessageFor(model => model.ID) 
       </span> 
     </li> 
    </ul> 

回答

1

如果您的路線中有ID,那麼將使用該值而不是模型中的ID。

例如,讓我們假設你有以下型號:

public class Stu_XS 
{ 
    public int ID { get; set; } 
    public Guid XSID { get; set; } 
} 

和下面的控制器操作:

public ActionResult SomeAction(int id) 
{ 
    var model = new Stu_XS(); 
    model.ID = 123; 
    return View(model); 
} 

,你會要求這樣的:

/somecontroller/someaction/456 

Html.EditorFor將顯示456這是來自ro而不是123從模型。這是設計。如果要更改此行爲,則必須從ModelState中刪除ID,以便使用模型中的值:

public ActionResult SomeAction(int id) 
{ 
    var model = new Stu_XS(); 
    model.ID = 123; 
    ModelState.Remove("id"); 
    return View(model); 
}