如何将动态对象从View传递给Controller

时间:2012-07-13 12:33:48

标签: asp.net-mvc forms

我需要一个带有一些动态输入字段的局部视图。为此,我的模型包含一个“对象”类型的对象,然后在我的控制器中,我创建了一个新模型,其相关对象类型为“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)

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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

 model.MyItems["keyName"]

答案 1 :(得分:1)

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

MyObject myObject = (MyObject) objectReturned;