我有两个相同字段的模型:
class Model1
{
int Prop1 { get; set; }
int Prop2 { get; set; }
}
class Model2
{
int Prop1 { get; set; }
int Prop2 { get; set; }
}
和主要模型:
class MainModel
{
Model1 P1 { get; set; }
Model2 P2 { get; set; }
}
我想为View
创建MainModel
,但不知道绑定数据是什么。
放入视图:
@Html.EditorFor(model => model.P1.Prop1 ... ) // first editor Prop1, for P1
@Html.EditorFor(model => model.P2.Prop1 ... ) // second editor Prop1, for P2
但控制器操作仅从第一个Prop1编辑器获取值,对于model1和model2,model2值必须从第二个编辑器获取;动作:
ActionResult Create([Bind(Include = "Prop1, Prop2")] Model1 model1,[Bind(Include = "Prop1, Prop2")] Model2 model2)
{
}
model2.Prop1值实际上是model1.Prop1值。
具有匹配名称的正确绑定字段是什么?
答案 0 :(得分:1)
您可以使用MainModel
作为操作参数:
ActionResult Create(MainModel model)
{
}
或者您可以将参数名称与主类属性名称匹配:
ActionResult Create(Model1 p1, Model2 p2)
{
}
答案 1 :(得分:0)
model2.Prop1值实际上是model1.Prop1值。不是。
根本没有任何约束,因为您的属性名称与视图中的生成名称不匹配。您的所有属性值均为0
(int
的默认值)
您的方法必须是
public ActionResult Create(MainModel model)
或
public ActionResult Create([Bind(Prefix = "P1")]Model1 model1, [Bind(Prefix = "P2")]Model2 model2)
Prefix
BindAttribute
属性从提交的表单值中删除前缀,以便P1.Prop1
变为Prop
以进行绑定