您可以创建一个自定义的模型粘结剂,该工程关Request.QueryString
集合,而不是常规的FormCollection
。
E.G:
public class MyTestObjectModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var qs = controllerContext.HttpContext.Request.QueryString;
return new MyTestObject
{
Name = qs["Name"],
Id = qs["Id"],
// etc, etc
};
}
}
然后设置你的[HttpGet]
动作相应:
[HttpGet]
public ActionResult Index([ModelBinder(typeof(MyTestObjectModelBinder))]MyTestObject m) {
}
你也可以注册它在全球,如果你喜欢,例如在Application_Start()
:
ModelBinders.Binders.Add(typeof(MyTestObject), new MyTestObjectModelBinder());
然后你只需要在模型对你的动作:
[HttpGet]
public ActionResult Index(MyTestObject m) {
}
说完所有这些,如果你有这么多参数,你必须问这些参数来自哪里?很可能是另一页上的表单。
在这种情况下,这应该是一个[HttpPost]
动作,带有表单集合中的参数,那么常规的MVC模型绑定将为您处理上述代码。
您是否尝试过实施该链接中建议的内容?我之前使用过,它满足了我的需求。 – Dirk