是否可以以 InputName/InputValue 格式绑定到 Key/Value 字典输入?
问问题
121 次
2 回答
1
如果您希望表单中的值像List<KeyValuePair<string,string>>
操作方法一样出现,您必须使用自定义模型绑定器。
public class CustomModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var form = controllerContext.HttpContext.Request.Form;
return form.Cast<string>().Select(s => new KeyValuePair<string,string>(s, form[s])).ToList();
}
}
[HttpPost]
public ActionResult Save(List<KeyValuePair<string,string>> form)
{
...
}
如果您对其他选项感到满意,您可以FormCollection
按照@Tommy 的建议进行。顺便说一句FormCollection
,是一个内置的字典类,其中包含表单提交的所有值。
您还可以创建一个简单的类,该类具有名称作为表单字段名称的属性,默认模型绑定器会自动实例化并设置类的值并提供给操作。这是人们通常遵循的方法。
于 2012-07-20T15:47:17.967 回答
0
如果您将正确的参数传递给您的操作方法,MVC 已经这样做了。 注意 - 强烈建议在您的操作方法中使用强类型视图和模型。
话虽如此,如果您的方法签名使用以下内容:
public ActionResult MyMethod(FormsCollection MyFormValues)
然后在您的代码中,您可以使用
var myFormValue = MyFormValues("InputName");
其中 InputName 是 FormsCollection 中使用的键,它将为您提供从 HTML 设置的值。
于 2012-07-20T14:28:30.980 回答