バニティ URL を許可しようとしていますが、入力すると問題が発生します。
XXXX/User/Profile/Test
それ以外の
xxxx/User/Profile/224
文字列を読み取れないこと。
私の現在の ActionResult は次のとおりです。
public ActionResult Profile(int ID = -1, string VanityID = null)
{
if (VanityID == null)
{
ppUser viewerChoice = DB.ppUser_GetUserByPersonID(ID);
return View(viewerChoice);
}
else
{
ppUser viewerChoice = DB.ppUser_GetUserByVanityID(VanityID);
return View(viewerChoice);
}
}
URL に int が入力された場合は int Id を取り込みますが、文字列が入力された場合は ID が -1 として読み取られるため、何も取り込まれずにエラーになります。
また、次のように2つのアクション結果を使用しようとしています:
public ActionResult Profile(int ID)
{
ppUser viewerChoice = DB.ppUser_GetUserByPersonID(ID);
return View(viewerChoice);
}
public ActionResult Profile(string ID)
{
ppUser viewerChoice = DB.ppUser_GetUserByVanityID(ID);
return View(viewerChoice);
}
しかし、いずれかの ActionResult を呼び出そうとすると、AmbiguousMatchException エラーがスローされます。
これも同様に役立つ場合は、routes.Maproute です。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new { controller = @"[^\.]*" }, // Parameter constraints
new string[] { typeof(MvcApplication).Namespace + ".Controllers" }
);