在.NET MVC,有一个简单的方法来检查,如果我的主页上?(In .NET MVC, is the

2019-07-30 03:15发布

我需要,如果用户从主页登录采取特定的行动。 在我LogOnModel,我有一个隐藏字段:

@Html.Hidden("returnUrl", Request.Url.AbsoluteUri)

在我的控制,我需要检查,如果该值是主页或没有。 在下面的例子中,我检查,看看用户是一个特定页面(“帐号/ ResetPassword”)上。 有没有一种方法来检查,看看他们的主页上,而不诉诸正则表达式?

    [HttpPost]
    public ActionResult LogOnInt(LogOnModel model)
    {
       if (model.returnUrl.Contains("/Account/ResetPassword"))
       {
          return Json(new { redirectToUrl = @Url.Action("Index","Home")});
       }

有任何想法吗? 数以百万计的感谢!

Answer 1:

接近这一点的一种方法是寻找在特定的控制器RouteData 。 假设你正在使用的主页的控制器被称为“HomeController的”,那么RouteData的请求将包含值“家”为重点的“控制器”。

这将是这个样子:

代替(或补充,如果你有其他的原因吧):

 @Html.Hidden("returnUrl", Request.Url.AbsoluteUri)

你将会拥有:

 @Html.Hidden("referrer", Request.RequestContext.RouteData.Values['Controller'])

和你的控制器会是这样的:

[HttpPost]
public ActionResult LogOnInt(LogOnModel model)
{
   if (model.referrer = "Home")
   {
      return Json(new { redirectToUrl = @Url.Action("Index","Home")});
   }
 }

这将消除使用需要.Contains()

更新

你也可以消除对隐藏字段的需要(从而降低整体的页面权重了什么似乎是在应用程序中的每一页)在引荐来源网址(映射Request.UrlReferrer.AbsoluteUri )的路线。 有一个关于这张贴在这里。

如何通过URL获得的RouteData?

这个想法是使用MVC引擎参照网址映射到一个MVC路线LogOnInt方法,使代码是完全自给。

这很可能是不是把控制器名称和动作的名字在那里清洁的世界,看看随着脚本推回给服务器。



Answer 2:

在任何视图中,以下代码返回当前控制器名称。

@ViewContext.Controller.ValueProvider.GetValue("controller").RawValue.ToString()

它是很容易的? :)



Answer 3:

您可以通过获取当前URL

string controller = (string)ViewContext.RouteData.Values["controller"];
string action = (string)ViewContext.RouteData.Values["action"];
string url = Url.Action(action, controller);

您可以在的HtmlHelper或呈现登录视图控制器做到这一点。

商店url在像你一样,那么在您的文章动作的隐藏字段:

[HttpPost]
public ActionResult LogOnInt(LogOnModel model)
{
   // Create your home URL
   string homeUrl = Url.Action("Index", "Home");
   if (model.referrer == homeUrl)
   {
      return Json(new { redirectToUrl = @Url.Action("Index","Home")});
   }
 }

使用的好处Url.Action是,它会使用你的路由表来生成URL,这意味着如果你的路线不断改变,你将不必更改此代码。



Answer 4:

您可以使用

  Request.Url.AbsoluteUri

然后,只需检查页面名称的字符串。

可能不是最好的方式,但它的一个快速简便的方法。

我从这个页面的方法:

如何获得当前页面的URL中的MVC 3

也有另一种答案有可能对你有用。



文章来源: In .NET MVC, is there an easy way to check if I'm on the home page?