ASP.NET MVC动态视图
我几天前发布了这个问题的背景..但答案还不完整,所以重新发布一个摘要。
我正在开发一个MVC 3 Razor Web App,其中存储了多种对象的细节。 (车辆,房屋,仪器等)。所有对象共享一些公共数据(标题,描述等)以及一些特定于其所属类别的细节。预计Category列表会增长,并且为了降低可维护性,我们希望重用相同的Add Object向导。该向导基于以下实现。
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种特定类别(电机,房屋等),如何在没有某种黑客的情况下执行此操作?
没有找到相关结果
已邀请:
2 个回复
漂汀拦
闪票仇门韧