クエリ文字列パラメーターの代替名のマッピングを設定するにはどうすればよいですか?
カスタム モデル バインダーを作成できます。
したがって、すべての 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; }
}
モデルバインダーでこれらの値を読み取り、null ではない値が見つかるまでクエリ文字列から読み取ってみてください。