Я опубликовал предысторию этого вопроса несколько дней назад ... но ответ еще не полный, поэтому повторно отправьте сообщение с кратким изложением.
Я занимаюсь разработкой веб-приложения MVC 3 Razor, в котором хранятся сведения о нескольких категориях объектов. (Транспортные средства, дома, инструменты и т. Д.). Все объекты имеют общие данные (заголовок, описание и т. Д.) И некоторые детали, относящиеся к категории, к которой он принадлежит. Ожидается, что список категорий будет расти, и ввиду снижения удобства обслуживания мы надеемся использовать тот же мастер добавления объектов. Мастер основан на следующей реализации.
http://afana.me/post/create-wizard-in-aspnet-mvc-3.aspx
В процессе многоэтапного мастера последний шаг позволяет пользователю вводить специфические для категории сведения (модель, марка, VIN и т. Д. Для транспортного средства). Страница представления привязана к модели «AssetView», которая определяется следующим образом
public class AssetView
{
[Required]
public string Title { get; set; }
[Required]
public string Description { get; set;}
public SpecificAsset AssetDetails { get; set; }
}
свойство AssetDetails будет динамически изменяться во время выполнения в соответствии с типом категории, выбранным на предыдущем этапе. вид выглядит так
@model AssetView
....
<div class="wizard-step">
...
</div>
<div class="wizard-step">
...
</div>
<div class="wizard-step">
@Html.EditorFor(model => model.AssetDetails)
</div>
в контроллере, в зависимости от выбора категории. Я начинаю активизировать детали активов следующим образом
_thisAsset.AssetDetails = new MotorAsset();
Затем я переопределяю представления с помощью шаблонов редактора, зависящих от типа.
Мастер работает нормально, но на этапе сохранения в контроллере свойство «AssetDetails» не имеет значений и показано, что оно имеет тип «SpecificAsset», который является базовым типом. я не могу привести его к определенному типу. Тем не менее, FormsCollection показывает все значения, определенные свойства «AssetDetails», такие как «Transmission», «Make», находятся в коллекции форм с префиксом «AssetDetails_».
Учитывая, что мне нужно обработать более 20 типов определенных категорий (Мотор, Дом и т. Д.) На этапе сохранения контроллера, как я могу сделать это без какого-либо взлома?