我的控制器包含包含代码的操作,看起来像
public ActionResult Index(FormCollection data)
{
var type = findTypeByName(data["CastToTypeName"]);
var model = transformRequestDataToType(data/* or may be Request*/, type) as DbEntity;
SaveData(model);
...
}
有没有办法将请求数据转换为运行时已知类型的对象?
我使用<form>
将数据发布到控制器并尝试在不将表单数据更改为json的情况下找到解决方案。
答案 0 :(得分:0)
首先,我将输入名称表示法简化为:
a.name
a.items\
a.items/name
a.items/desc
a.items\
a.items/name
a.items/desc
是
a.name
a.items.Index
a.items[0].name
a.items[0].desc
a.items.Index
a.items[1].name
a.items[1].desc
接下来我在使用js提交之前提取表单数据,阻止表单提交并将带有表单数据的ajax post请求发送到action
表单属性中定义的url。在服务器端,我解析数据并递归地将其分配给给定类型的实例的属性。我设置ParseAs<MyType>(Request)
时可以ParseAsGiven(Request)
甚至CastToTypeName
。