アクションメソッドに適用するアクションフィルターの作成を試みることができます。アクションフィルターは、URLクエリパラメーターを通過する必要があります。空の値を持つパラメーターが見つかった場合は、パラメーターにバインドできます。
public override void OnActionExecuting(ActionExecutingContext filterContext) {
if (filterContext.HttpContext.Request.Url != null) {
NameValueCollection urlQuery = System.Web.HttpUtility.ParseQueryString(filterContext.HttpContext.Request.Url.Query);
for (int i = 0; i < urlQuery.Keys.Count; i++ )
{
if (urlQuery.Get(urlQuery[i]) == null)
{
filterContext.ActionParameters["word"] = urlQuery[i];
}
}
}
base.OnActionExecuting(filterContext);
}
惨めに失敗しないように、nullではない条件をいくつか書く必要があります:)
編集:
ドロップしたい場合は?このようなデフォルトのMVCURLルーティングを使用するだけです。
routes.MapRoute(
"UrlShortener", // Route name
"{word}", // URL with parameters
new { controller = "UrlShortener", action = "Fetch", word="Default", }
);
あなたのコントローラーは受け入れます
public ActionResult UrlShortener(string word) {
if (word == "Default") return Content("No word specified");
//some BLL
return View();
}
そうすれば、URLはhttp:// hostname / wordになります。単語が指定されていない場合は、「デフォルト」を渡します。
それがあなたが望んでいたものなら