【发布时间】:2012-11-23 18:43:34
【问题描述】:
我希望将算术表达式存储到数据库中。我有这个数据库结构:
Expression
=======
id
name
Operand
=======
id
expressionId
value
side (indicates if the operand is on the left or right side of the expression)
idx (the index to identify the order of operands on each side)
Operator
========
id
expressionId
type
side
idx
在我的视图中,我希望通过根据请求向页面动态添加控件,为用户提供创建具有可变数量的操作数和运算符的表达式的能力。如果用户点击“添加操作数”按钮,将通过javascript为操作员生成一个下拉菜单,并为操作数生成一个文本框。
我的想法是在我的表达式的创建操作中使用自定义模型绑定并使用视图模型:
public class ExpressionCreateViewModel
{
IEnumerable<ExpressionOperator> Operators { get; set; }
IEnumerable<ExpressionOperand> Operands { get; set; }
Expression Expression { get; set; }
}
模型绑定器可以使用它:
public class ExpressionCreateViewModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var vm = new ExpressionCreateViewModel();
//Build it!
}
我担心的是如何将动态生成的控件的值传递到此视图模型中。我能想到的唯一方法是创建提供所有详细信息的控件 ID(例如 )
然后我可以解析表单集合中的项目,并按照惯例构建操作数和运算符对象。
有人有更清洁的方法吗?
谢谢!
克里斯
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 model-view-controller