Asp.net mvc 是否可以以InputName/InputValue格式绑定到键/值字典输入

Asp.net mvc 是否可以以InputName/InputValue格式绑定到键/值字典输入,asp.net-mvc,Asp.net Mvc,是否可以将InputName/InputValue格式的输入绑定到键/值字典中?如果将正确的参数传递给操作方法,MVC已经这样做了注意-强烈建议在操作方法中使用强类型视图和模型。 因此,如果您的方法签名使用以下内容: public ActionResult MyMethod(FormsCollection MyFormValues) 然后在代码中,可以使用 var myFormValue = MyFormValues("InputName"); 其中InputName是FormsCollec

是否可以将InputName/InputValue格式的输入绑定到键/值字典中?

如果将正确的参数传递给操作方法,MVC已经这样做了注意-强烈建议在操作方法中使用强类型视图和模型。

因此,如果您的方法签名使用以下内容:

public ActionResult MyMethod(FormsCollection MyFormValues)
然后在代码中,可以使用

var myFormValue = MyFormValues("InputName");

其中InputName是FormsCollection中使用的键,它将为您提供从HTML中设置的值

如果您希望表单中的值作为
列表
中的操作方法出现,则必须为自定义模型绑定器设置

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)
{
  ...
}
公共类CustomModelBinder:IModelBinder
{
公共对象绑定模型(ControllerContext ControllerContext,ModelBindingContext bindingContext)
{
var form=controllerContext.HttpContext.Request.form;
返回form.Cast();
}
}
[HttpPost]
公共操作结果保存(列表表单)
{
...
}
如果您对其他选项满意,可以按照@Tommy的建议选择
FormCollection
。顺便说一下,
FormCollection
是一个内置字典类,它包含表单提交的所有值


您还可以创建一个简单的类,该类的属性名为表单字段名,默认的模型绑定器会自动实例化和设置类的值,并提供给操作。这是人们通常采用的方法。

这与asp.net mvc有什么关系?我的意思是,以html为例,我们有:如何以格式列表的形式将其绑定回服务器,其中键是名称和值它是html中的值