Я не могу заставить работать ненавязчивую проверку с использованием пользовательских моделей представления, представляющих абстракции моих сгенерированных EF классов.
Как ни стараюсь, проверка не запускает отправку формы для свойства Name
в моем городе сущность.Я считаю, что это как-то связано с различными моделями в представлениях, но я просто недостаточно знаю, как все это работает.
Пожалуйста, обратите внимание.У меня есть все последние сценарии проверки, и при просмотре страницы с помощью firebug и firequery я вижу, что сценарий добавляет и удаляет класс, допустимый из входных данных, но входные данные не являются частью коллекции проверки.
Заранее большое спасибо.
My 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; }
}
My CreateCity view:
@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>