Я занимаюсь разработкой веб-приложения MVC 3 Razor, в котором хранятся сведения о нескольких категориях объектов.(Транспортные средства, дома, инструменты и т. Д.).Все объекты имеют общие данные (заголовок, описание и т. Д.) И некоторые детали, относящиеся к категории, к которой он принадлежит.Ожидается, что список категорий будет расти, и ввиду снижения удобства обслуживания мы надеемся использовать тот же мастер добавления объектов.Мастер основан на следующей реализации.
http://afana.me/post/create-wizard-in-aspnet-mvc-3.aspx
В процессе многоэтапного мастера последний шаг позволяет пользователю вводить специфические для категории сведения (модель, модель), VIN и т. Д. Для автомобиля).В настоящее время я представляю этот последний шаг как частичное представление с AJAX.Таким образом, на самом деле у нас будет несколько частичных представлений, которые отражают определенную категорию, но совместно используют остальную часть кода мастера.
Мой общий объект модели выглядит следующим образом:
public class AssetView
{
[Required]
public string Title
{
get;
set;
}
[Required]
public string Description
{
get;
set;
}
// Few more generic fields here
public SpecificAsset AssetDetails { get; set; }
}
Комплексное свойство AssetDetailsпредставлен каждым типом частичного представления.Таким образом, PartialView «MotorDetails» будет содержать строго типизированную модель типа MotorAsset, которая объявлена, как показано ниже.
public class MotorAsset : SpecificAsset
{
[Required]
public string Transmission
{
get;
set;
}
[Required]
public string Make
{
get;
set;
}
}
Фактическая проверка гораздо сложнее, но я ее опустил, чтобы ее было легче понять.
Страница главного мастера объявлена как
@model AssetView
.....
<div class="wizard-step">
....
</div>
<div class="wizard-step">
....
</div>
<div class="wizard-step">
@{Html.RenderPartial("_MotorCreate", Model.AssetDetails);
</div>
Частичное представление двигателя как
@model MotorAsset
Мой вопрос заключается в том, как выполнить проверку модели в этом сценарии (илиэто возможно использовать), так как последний шаг не на странице просмотра, а на частичном представлении.