2010-11-02 43 views
0

上下文:使用EF的MVC 2應用程序。有關MVC數據註釋,編輯器模板和驗證的問題

爲什麼有些工作,但有些沒有?顯示名稱被設置爲「Court Name」,但沒有進行驗證,即沒有看到錯誤消息。我在想編輯器模板會干擾驗證,否則Model.IsValid不能用於複雜的視圖模型。

有什麼想法?

部分類:

[MetadataType(typeof(CourtMetaData))] 
public partial class Court 
{ 

    private class CourtMetaData 
    { 

     [Required(ErrorMessage = "Court Name is required")] 
     [DisplayName("Court Name")] 
     public System.String CourtName 
     { 
      get; 
      set; 
     } 

    } 

} 

控制器:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult New(CourtsNewViewModel court) 
{ 
    if (ModelState.IsValid) 
    { 
     db.AddCourt(court); 
     return View("List"); 
    } 
    else 
    { 
     return View("New", court); 
    } 
} 

視圖模型:

public class CourtsNewViewModel : ViewModelBase 
{ 

    public Court Court {get; private set; } 

    public IEnumerable<CourtType> CourtTypes { get; private set; } 

    public CourtsNewViewModel() 
    { 
     CourtTypes = db.GetAllCourtTypes(); 
    } 

} 

VIEW:

Html.EditorFor(model => model.Court.CourtName, "LongString") 

EDITOR模板:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.String>" %> 
<div class="editor-row"> 
<div class="editor-label"> 
    <%= Html.LabelFor(model => model) %> 
</div> 
<div class="editor-field"> 
    <%= Html.TextBoxFor(model => model)%> 
    <%= Html.ValidationMessageFor(model => model) %> 
</div> 
</div> 

回答

1

這裏的疑難雜症:

public ActionResult New(CourtsNewViewModel court) 

court變量已經作爲你有你的模型Court屬性。

現在重命名參數:

public ActionResult New(CourtsNewViewModel courtModel) 

一切都應該按預期工作。