2011-04-25 4 views
1

Я не могу получить ненавязчивую проверку для работы с использованием пользовательских viewModels, представляющих абстракции моих классов, сгенерированных EF.viewmodels и ненавязчивая проверка mvc3

Как я могу, проверка не увольняется при отправке формы для объекта Name в моем городском образовании. Я считаю, что это имеет какое-то отношение к различным моделям в представлениях, но я просто не знаю, как все это работает.

Обратите внимание. У меня есть все последние скрипты проверки, и, наблюдая за страницей с помощью firebug и firequery, я вижу, что скрипт добавляет и удаляет класс, действительный с входа, но тот, что вход не является частью коллекции проверки.

Большое спасибо заранее.

Мои ViewModel:

/// <summary> 
/// Represents abstraction of the City View that also serves in 
/// data binding between the City View and the City Model. 
/// </summary> 
public class CityViewModel 
{ 
    /// <summary> 
    /// Gets or sets the city. 
    /// </summary> 
    /// <value></value> 
    public City City { get; set; } 

    /// <summary> 
    /// Gets or sets the collection of states. 
    /// </summary> 
    /// <value></value> 
    public ICollection<State> States { get; set; } 
} 

мой взгляд CreateCity:

@model OzFarmGuide.ViewModels.CityViewModel 
@{ 
    ViewBag.Title = "Create a new city"; 
    Layout = "~/Views/Shared/_AdminLayout.cshtml"; 
} 
<h2> 
    Create a new city</h2> 

@using (Html.BeginForm()) 
{ 
    @Html.EditorFor(model => model.City, new { States = Model.States }) 
    <div class="entity-actions"> 
     <input type="submit" value="Create" /> 
     | 
     @Html.ActionLink("Back to List", "Cities") 
    </div> 
} 

Мой шаблон Редактор: (_ValidationPartial содержит только ссылки сценария)

@model OzFarmGuide.Models.City 
@Html.Partial("_ValidationPartial") 
@Html.ValidationSummary(true) 
<div class="editor-label"> 
    @Html.LabelFor(model => model.Name) 
</div> 
<div class="editor-field"> 
    @Html.TextBoxFor(model => model.Name) 
    @Html.ValidationMessageFor(model => model.Name) 
</div> 
<div class="editor-label"> 
    @Html.LabelFor(model => model.State) 
</div> 
<div class="editor-field"> 
    @Html.DropDownList("StateId", 
    new SelectList(ViewBag.States as System.Collections.IEnumerable, 
    "StateId", "Name", 
    Model.StateId)) 
</div> 
@Html.HiddenFor(model => model.CityId) 

В соответствии с поручением здесь сценарии Я включил:

<script src="@Url.Content("http://ajax.aspnetcdn.com/ajax/jquery.validate/1.8/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 
+0

Что Js скрипты вы включили? У меня такое ощущение, что jquery.unobtrusive-ajax.js не включен. –

+0

@amit_g: У меня не было этого скрипта, но насколько мне известно, это было необходимо только для сообщений ajax. Я добавил ссылку, но, к сожалению, изменений нет. –

+0

Не могли бы вы точно указать, какие скрипты включены? Вероятно, они будут в _AdminLayout.cshtml. –

ответ

3

Необходимо добавить [Обязательные] аннотации данных для всех типов ссылок и типов строк. Как вы упомянули, что ваши классы генерируются EF. Для этого используйте класс друзей. Посмотрите на answer в другом подобном вопросе.

+0

Поистине выдающаяся поддержка! Большое спасибо за это. Это действительно была ошибка шоу. Ура! –

0

1- Для свойств строки вы должны добавить [Обязательно].

2- Можете ли вы проверить, есть ли у вас несколько полей ввода с тем же именем «Имя», это может быть проблемой.

0

У вас есть следующее:

<configuration> 
    <appSettings> 
     <add key="ClientValidationEnabled" value="true"/> 
     <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
    </appSettings> 
</configuration> 

Вы также можете включить или выключить с кодом:

HtmlHelper.ClientValidationEnabled = true; 
HtmlHelper.UnobtrusiveJavaScriptEnabled = true; 

Кроме того, вы добавили какой-либо из требуемых данных аннотаций к вашим свойствам?

Brad Wilson On Unobtrusive Validation

Смежные вопросы