如何为查询字符串参数的备用名称设置映射?
您可以编写自定义模型绑定器。
就像在每个 ASP.NET MVC 应用程序中一样,您首先要编写一个视图模型:
public class MyViewModel
{
public string Color { get; set; }
}
然后是这个模型的模型绑定器:
public class MyViewModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var query = controllerContext.HttpContext.Request.QueryString;
var value = query["color"] ?? query["gul"] ?? query["couleur"];
return new MyViewModel
{
Color = value,
};
}
}
将在您的Application_Start注册:
ModelBinders.Binders.Add(typeof(MyViewModel), new MyViewModelBinder());
现在您的控制器操作可以将视图模型作为参数:
public ActionResult Index(MyViewModel model)
{
...
}
当然,您可以通过在属性上使用一些自定义属性来使模型绑定器更加灵活:
public class MyViewModel
{
[PossibleQueries("color", "gul", "couleur")]
public string Color { get; set; }
}
在模型绑定器中读取这些值并尝试从查询字符串中读取它们,直到找到一个不为空的值。