我需要一个带有一些动态输入字段的局部视图。为此,我的模型包含一个“对象”类型的对象,然后在我的控制器中,我创建了一个新模型,其相关对象类型为“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)
答案 0 :(得分:1)
对象本身不具有任何属性 - 您需要将其强制转换为包含所需属性的类型。
如果你不能这样做,因为你想为不同的myobject类型重用视图,那么你需要使用一个接口和一些常用的命名属性。
另一种方法是使用属性包,即字典,并在视图中按键名引用值。
然后,您可以在模型上定义属性:
public Dictionary<string, string> MyItems {get;set;}
并在您的页面中引用它们:
model.MyItems["keyName"]
答案 1 :(得分:1)
您必须转换返回的对象。 它是这样的:
MyObject myObject = (MyObject) objectReturned;