如何为查询字符串参数的备用名称设置映射?
您可以编写自定义模型绑定器。
因此,在每个 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; }
}
并在模型绑定器中读取这些值并尝试从查询字符串中读取它们,直到找到一个不为空的值。