2011-05-13 47 views
1

我使用MVC 3.0模型驗證問題時,呈現同型號的兩倍PN同一頁

我的問題是在一個頁面上,我使用同一型號的兩倍一些驗證。但是客戶端驗證僅適用於第一個模型。

我考慮代碼是

@using (Html.BeginDTPanel("Applicant")) 
     { 
     <text> 
      @Html.Partial("~/areas/common/views/shared/_customer.cshtml", Model.Applicant) 
     </text>  
     } 

     @{ var state = Model.Mode == ActionMode.Edit && Model.CoApplicant.TaxIdentifierLastFour != null ? "expanded" : "collapsed"; } 
     @using (Html.BeginDTPanel("Co-applicant", state)) 
     { 
     <text> 
      @Html.Partial("~/areas/common/views/shared/_customer.cshtml", Model.CoApplicant) 
     </text>  
     } 

_Customer.cshtml碼是一樣的東西

@Html.LabelFor(Model.Prefix, m => m.FirstName, "First Name") 

@ Html.TextBoxFor(Model.Prefix中,m => m.FirstName) @ Html.ValidationMessageFor(Model.Prefix,m => m.FirstName)

@ Html.LabelFor(Model.Prefix,m => m.MiddleName,「Middle Initia升「) @ Html.TextBoxFor(Model.Prefix中,m => m.MiddleName) @ Html.ValidationMessageFor(Model.Prefix中,m => m.MiddleName)
@ Html.LabelFor(Model.Prefix,米=> m.LastName, 「姓」) @ Html.TextBoxFor(Model.Prefix中,m => m.LastName) @ Html.ValidationMessageFor(Model.Prefix中,m => m.LastName)

這在我以前

驗證模型是如下

[RequiredIf(的ErrorMessage = 「請輸入名字」)] [S tringLength(15,ErrorMessage =「超過最大字符數限制」)] [RegularExpression(@「^ [a-zA-Z0-9] +(([\'\,.-] [a-zA-Z0-9] )?[a-zA-Z0-9] $「,ErrorMessage =」錯誤的名字「)] public string FirstName {get;組; }

[StringLength(1, ErrorMessage = "Maximum character limit exceeded")] 
    [RegularExpression(@"^[a-zA-Z ]$", ErrorMessage = "Incorrect Middle Initial")] 
    public string MiddleName { get; set; } 

    [RequiredIf(ErrorMessage = "Please Enter Last Name")] 
    [StringLength(25, ErrorMessage = "Maximum character limit exceeded")] 
    [RegularExpression(@"^[a-zA-Z0-9 ]+(([\'\,\.\-][a-zA-Z0-9 ])?[a-zA-Z0-9 ]*)*$", ErrorMessage = "Incorrect Last Name")] 
    public string LastName { get; set; } 

    [RequiredIf(ErrorMessage = "Please Enter SSN")] 
    [StringLength(11, ErrorMessage = "Maximum character limit exceeded")] 
    [SouciaSecurityNumber(ErrorMessage ="Invalid SSN")] 
    [RegularExpression(@"^([0-9]\d{2}|7[0-6]\d|77[0-2])([ \-]?)(\d{2})\2(\d{4})$", ErrorMessage = "InValid SSN")] 
    public string TaxIdentifier { get; set; } 

確切的問題是在這裏我使用相同的模型與驗證申請人和共同申請人。但是頁面呈現驗證僅適用於第一申請人。

當我檢查查看源 驗證相關代碼只提供給申請人。

但我需要應用兩種模式的驗證。

請建議您有任何解決方案。

謝謝

回答

0

一個沒有添加follwing線到我的.cshtml文件,它現在的工作。

@ {ViewData.TemplateInfo = new System.Web.Mvc.TemplateInfo {HtmlFieldPrefix = Model.Prefix}; }

2

使用編輯器模板而不是標準partials。基本上只是移動_customer.cshtml/Shared/EditorTemplates/Customer.cshtml然後用

@Html.EditorFor(m => m.Applicant) 
@Html.EditorFor(m => m.CoApplicant) 
+0

使用此解決方案,模型中的所有屬性都使用表單上的html進行呈現。我想使用_customer.cshtml作爲模板。 – Chetan 2011-05-16 12:36:27

+0

不是..這個對我來說不適合.. – Chetan 2011-05-19 09:59:59