Проверка на стороне клиента MVC с использованием подвойств - PullRequest
0 голосов
/ 23 декабря 2010

Имеются следующие классы:

public class MyObjB {
     [Required(ErrorMessage = "I need it")]
     public string Name { get; set; }
}

public class MyObjA {
     [Required(ErrorMessage = "I need it")]
     public string Name { get; set; }

     public MyObjB MyObjB { get; set; }
}

Вид: использование модели в качестве MyObjA

@{ Html.EnableClientValidation(); }
@{Html.BeginForm();}
@Html.ValidationSummary("Some errors") @Html.AntiForgeryToken()
    // MyObjA part
    @Html.LabelFor(model => model.Name):
    @Html.TextBoxFor(model => model.Name) 
    @Html.ValidationMessage("Name", "*")

    // MyObjB part
    @Html.LabelFor(model => model.MyObjB.Name):
    @Html.TextBoxFor(model => model.MyObjB.Name) 
    @Html.ValidationMessage("MyObjB.Name", "*")
@{ Html.EndForm(); }

EnableClientValidation не будет работать .... Я думаю, что это связано с "." (точка) использовал и проблемы с javacript, но я могу ошибаться и причина будет другая.

Если я использую ту же форму, но только для MyObjB, она будет работать нормально, а проверка клиента выполняется правильно.

Как вы, люди, используете EnableClientValidation со своими подвойствами?

Спасибо.

РЕДАКТИРОВАТЬ 1 - для байтового запроса

Просмотр:

@Html.TextBoxFor(model => model.MyObjB.Name) 

HTML Результат:

<input id="MyObjB_Name" name="MyObjB.Name" type="text" value="" />

Ответы [ 3 ]

0 голосов
/ 23 декабря 2010

что вам нужно сделать, это создать видовую модель для вашего вида, которая будет иметь свойства класса A и класса B

public class ViewModelAB
{
    [validation error message]  
    A PropertyA { get; set; }

    [validation error message]  
    B PropertyB { get; set;}
}

и использовать эту модель модели вида строго для вашего вида

0 голосов
/ 24 января 2011

Это будет работать, пока у вас есть ссылка и инициализация objB в objA, потому что ваша модель для представления - ObjA

0 голосов
/ 23 декабря 2010

Я думаю, что вы должны использовать следующее в вашем web.config:

     <appSettings>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...