Model view controller MVC网站中的动态选项

Model view controller MVC网站中的动态选项,model-view-controller,Model View Controller,我有一个MVC网站,它有一个产品详细信息视图。 在这个视图中有许多关于产品的详细信息 我需要的是在用户将商品添加到购物车之前问他们一些问题。 例如什么颜色、什么尺寸、数量。。。。但并非所有产品都有相同的选项列表。 一些选项将有一个下拉列表,其他将是自由文本字段。 构建页面此部分的最佳方法是什么?感觉好像我需要product表中的一个xml字段,该字段保存特定于产品的xml,这些xml可以解析到本页的options部分。但我不知道这是否可能,或者我将如何保存数据 如果您对最佳解决方案有任何想法,我

我有一个MVC网站,它有一个产品详细信息视图。 在这个视图中有许多关于产品的详细信息

我需要的是在用户将商品添加到购物车之前问他们一些问题。 例如什么颜色、什么尺寸、数量。。。。但并非所有产品都有相同的选项列表。 一些选项将有一个下拉列表,其他将是自由文本字段。 构建页面此部分的最佳方法是什么?感觉好像我需要product表中的一个xml字段,该字段保存特定于产品的xml,这些xml可以解析到本页的options部分。但我不知道这是否可能,或者我将如何保存数据

如果您对最佳解决方案有任何想法,我将非常感激

谢谢 约翰很简单

首先,看看MVC中的s,您可以得到两种类型的DisplayTemplates和EditorTemplates

现在,它们的工作原理与普通视图相同,但位于特殊的文件夹中,例如,命名与上面相同

\Views\Home\Index.cshtml  
\Views\Home\DisplayTemplates\MyViewModelName.cshtml
\Views\Home\EditorTemplates\MyViewModelName.cshtml
这就是他们的工作方式

如果您像这样创建
ProductDetailsViewModel

public class ProductDetailsViewModel {
     public IList<Question> Questions { get;set; }
}
public abstract class Question {
 // .. maybe need some common properties here, like answer value?
}
然后,您可以定义更具体的问题,如:

public class TextQuestion : Question {

}

public class RadioQuestion : Question {

 // maybe has a list of options for display etc.

}
等等

然后假设在you\Home\Index.cshtml视图中使用上述结构,您可以简单地执行以下操作

@using(Html.BeginForm())
{
     <p>Put your form here</p>

     @Html.TextboxFor(x=>x.ProductName)

     @Html.EditorFor(x => x.Questions)

     <input type="submit" value="Submit" />
}
当然,显示器的工作原理也是一样的

@model RadioQuestion

<p>This is a radio button based question</p>

// Implement the radio buttons or text boxes etc here.