役割に基づいて別のアクションにリダイレクトする必要があります。私はRouteConfig.csに以下の変更を加えました。ここでASP.NET MVCルーティング - アクション名とURLが同じ場合にルートにリダイレクトする
RouteConfig.cs
routes.MapRoute(
name: "borrower",
url: "borrower",
defaults: new { controller = "Home", action = "Borrower" });
routes.MapRoute(
name: "broker",
url: "broker",
defaults: new { controller = "Home", action = "Broker" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
私のコントローラ
HomeController.cs
public class HomeController : Controller
{
public ActionResult Index()
{
if (UserPrincipal.Current.Identity.IsAuthenticated)
{
if (UserPrincipal.Current.IsInRole("Broker"))
{
return RedirectToRoute("broker");
}
else if (UserPrincipal.Current.IsInRole("Borrower"))
{
return RedirectToRoute("borrower");
}
}
return View();
}
public ActionResult Broker()
{
return View();
}
public ActionResult Borrower()
{
return View();
}
}
コードの流れがreturn RedirectToRoute("")
まで正常に動作しますが、このコードフロー後に適切な/関連に行くことはありませんされますアクションと空のビューが返されます。
注:ブローカーと借り手の両方のビューには、静的テキストがありません。
[ネットワーク]タブでは、適切なリダイレクトが実行されていて、ブラウザのURLがルートURLに設定されていることがわかります。
RedirectToRoute("Broker")
それはしかしHomeController
にBroker
アクションメソッドをabc.com/broker
当たらないはずですし、空のビューが返されるよう302
応答し、ユーザに結果をabc.com/broker
にリダイレクトされます。 RouteConfig.cs
によると、それはBroker
アクションメソッドをヒットする必要があります。
私がここで間違っていることを指摘してください。
あなたの現在のURL(リダイレクトから)は 'Home/Broker'ですか?それであなたがしている問題は何ですか? – Shyju
リダイレクト時の@Shyju Urlはabc.com/Brokerになります。しかし、対応するビューを返さず、空のビューを返します。 – Zeeshan
ブラウザでURLにアクセスすると、ビューは空ですか?だからあなたのリダイレクトとは関係ありません。儀式? – Shyju