您可以創建一個自定義的模型粘結劑,該工程關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