Проблема проверки модели при рендеринге одной и той же модели дважды на одной странице - PullRequest
1 голос
/ 13 мая 2011

Я использую MVC 3.0

Моя проблема на одной странице, я использую одну и ту же модель дважды с некоторой проверкой.Но проверка на стороне клиента применяется только для первой модели.

Мой код:

 @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 Initial») @ Html.TextBoxFor (Model.Prefix, m => m.MiddleName) @ Html.ValidationMessageFor (Model.Prefix, m => m.Второе имя)@ Html.LabelFor (Model.Prefix, m => m.LastName, «Last Name») @ Html.TextBoxFor (Model.Prefix, m => m.LastName) @ Html.ValidationMessageFor (Model.Prefix, m => m.Фамилия)

Модель проверки, которую я использовал, показана ниже

[RequiredIf (ErrorMessage = "Пожалуйста, введите имя")] [StringLength (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; }

Точные проблемы здесь, я использую ту же модель с проверкой как для заявителя, так и для соискателя.но когда проверка при визуализации страницы применима только к первому заявителю.

Когда я проверял код, связанный с проверкой исходного кода, отображаемый только для кандидата.

Но мне нужно применить проверку для обоих режимов.

Пожалуйста, предложите любое решение, которое у вас есть.

Спасибо

Ответы [ 2 ]

2 голосов
/ 13 мая 2011

Используйте шаблоны редактора вместо стандартных партиалов.Просто переместите _customer.cshtml на /Shared/EditorTemplates/Customer.cshtml, а затем используйте

@Html.EditorFor(m => m.Applicant)
@Html.EditorFor(m => m.CoApplicant)
0 голосов
/ 19 мая 2011

A добавила следующую строку в мой файл .cshtml, который сейчас работает.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...