0

我需要一个带有一些动态输入字段的局部视图。为此,我的模型包含一个“object”类型的对象,然后在我的控制器中创建一个具有相关对象类型“myobject”的新模型。

在 PartialViewResult 中一切正常,但在表单提交后,对象不包含我的对象类型“myobject”。

如何发送表单提交正确的对象?

控制器:

public PartialViewResult mypage()
{
myModel model = new myModel();
myObject obj = new myObject();
model.myobject = obj;

return PartialView(“mypage”,model);
}

public PartialViewResult Save (myModel model)
{
    // Here I need model.myobject!!!
}

模型:

public class myModel
{
    public long id {get;set;}
    public object myobject {get;set;}
}

public myObject
{
    public string myname {get;set;}
}

看法:

@model myModel
// form (code omitted)
@Html.EditorFor(model => model.myobject)

<button type="submit">Save</button>

模板

@model myObject

@Html.EditorFor(model => model.myname)
4

2 回答 2

1

对象本身不会有任何属性 - 您需要将其转换为包含所需属性的类型。

如果您因为想为不同的 myobject 类型重用视图而不能这样做,那么您将需要使用接口和一些通常命名的属性。

另一种方法是使用属性包,即字典,并通过视图中的键名引用值。

然后,您可以在模型上定义一个属性:

 public Dictionary<string, string> MyItems {get;set;}

并在您的页面中引用它们:

 model.MyItems["keyName"]
于 2012-07-13T12:36:15.740 回答
1

您必须转换返回的对象。是这样的:

MyObject myObject = (MyObject) objectReturned;
于 2012-07-13T12:40:02.200 回答