从ASP.NET MVC视图中的URL获取属性

时间:2017-12-12 12:49:12

标签: jquery asp.net-mvc razor

我的网址如下

http://ixorra.com/products/27/13

我想在视图中找到27个值

我的网址路由配置如:

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            namespaces: new[] { "IxorraExports.Controllers" }
        );

知道如何在视图中获得27的值。

2 个答案:

答案 0 :(得分:1)

你可以通过拆分网址来实现:

var url = $(location).attr('href');
var parts = url.split("/");
alert(parts[0]);

你可以通过正确的索引来分享。 我希望它可以提供帮助!

答案 1 :(得分:1)

根据您对上述问题的评论:

  

在网址"产品"是Action方法名称,27是我的第一个动作方法参数,13是动作方法的第二个参数   控制器名称是家庭和"家庭"是路由配置中的默认控制器。

首先,您的网址有误。你忘记了控制器。它应该是:

http://ixorra.com/home/products/27/13

一旦您纠正了这一点,您只需要在路线配置中添加另一个可选参数即可。这只会改变这些界限:

url: "{controller}/{action}/{id}/{foo}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, foo = UrlParameter.Optional },

当然,您希望使用比foo更有意义的名称。但我们不知道这些价值观是什么意思,所以现在只是一个占位符。

您的控制器操作可以接受这些网址参数:

public ActionResult Products(int id, int foo)
{
    // your action method
}

(这是更有意义的名称变得非常有意义的地方。无论什么常见的通用名称对于第二个参数都有意义,您将在路由定义和方法定义中使用它们。)

此时你有价值,所以你可以用它做任何你喜欢的事。将其添加到发送到视图的模型中,在ViewBag中发送,等等。例如:

public ActionResult Products(int id, int foo)
{
    ViewBag.foo = foo;
    return View();
}

然后在您的视图中,您可以访问ViewBag

中的值
<span>The value is: @ViewBag.foo</span>