将 FormCollection 转换为仅在运行时已知类型的对象
Convert FormCollection to object of type known only at runtime
我的控制器带有包含代码的操作,看起来像
public ActionResult Index(FormCollection data)
{
var type = findTypeByName(data["CastToTypeName"]);
var model = transformRequestDataToType(data/* or may be Request*/, type) as DbEntity;
SaveData(model);
...
}
有什么方法可以将请求数据转换为运行时已知类型的对象吗?
我 post 使用 <form>
向控制器发送数据,并尝试在不将表单数据更改为 json.
的情况下找到解决方案
首先,我将输入的名称符号简化为:
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 请求和表单数据到 url 在 action
表单属性中定义.在服务器端,我解析数据并将其递归分配给给定类型实例的属性。因此,当设置 CastToTypeName
值时,我可以 ParseAs<MyType>(Request)
甚至 ParseAsGiven(Request)
。
我的控制器带有包含代码的操作,看起来像
public ActionResult Index(FormCollection data)
{
var type = findTypeByName(data["CastToTypeName"]);
var model = transformRequestDataToType(data/* or may be Request*/, type) as DbEntity;
SaveData(model);
...
}
有什么方法可以将请求数据转换为运行时已知类型的对象吗?
我 post 使用 <form>
向控制器发送数据,并尝试在不将表单数据更改为 json.
首先,我将输入的名称符号简化为:
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 请求和表单数据到 url 在 action
表单属性中定义.在服务器端,我解析数据并将其递归分配给给定类型实例的属性。因此,当设置 CastToTypeName
值时,我可以 ParseAs<MyType>(Request)
甚至 ParseAsGiven(Request)
。