我將定義以下路線:
routes.MapRoute(
"Default",
"{controller}/{action}/{someparam}",
new { controller = "Users", action = "Search", id = UrlParameter.Optional }
);
,然後寫爲一個字符串數組的自定義模型粘合劑:
public class StringArrayModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (value != null)
{
return value.AttemptedValue.Split(',');
}
return base.BindModel(controllerContext, bindingContext);
}
}
最後我會有這樣定義的控制器動作:
public ActionResult Search(
[ModelBinder(typeof(StringArrayModelBinder))] string[] users,
string someparam
)
{
...
}
如果您希望將此自定義模型聯編程序應用於所有具有字符串作爲操作參數的數組,你可以在Application_Start
聲明它:
ModelBinders.Binders.Add(typeof(string[]), new StringArrayModelBinder());
,然後你的控制器動作,都只是:
public ActionResult Search(string[] users, string someparam)
{
...
}