如何在ASP .NET MVC中获取当前路由的url参数值

时间:2012-09-04 15:20:54

标签: c# asp.net-mvc razor

例如我在页面http://localhost:1338/category/category1?view=list&min-price=0&max-price=100

在我看来,我想渲染一些形式

@using(Html.BeginForm("Action", "Controller", new RouteValueDictionary { { /*this is poblem place*/ } }, FormMethod.Get))
{
    <!--Render some controls-->
    <input type="submit" value="OK" />
}

我想要的是从当前页面链接获取view参数值,以使用它来构造表单获取请求。我试过@using(Html.BeginForm("Action", "Controller", new RouteValueDictionary { { "view", ViewContext.RouteData.Values["view"] } }, FormMethod.Get)),但没有帮助。

4 个答案:

答案 0 :(得分:15)

我找到了解决方案in this thread

@(ViewContext.RouteData.Values["view"])

答案 1 :(得分:3)

您仍然可以从视图中访问Request对象:

@using(Html.BeginForm(
    "Action", 
    "Controller", 
    new RouteValueDictionary { 
        { "view", Request.QueryString["view"] } }, FormMethod.Get))

答案 2 :(得分:1)

您不能直接在ASP .NET Core中访问Request对象。这是一种方法。

@ViewContext.HttpContext.Request.Query["view"]

答案 3 :(得分:0)

从MVC的角度来看,您可能希望将控制器中的值传递到页面中,例如

public ActionResult ViewCategory(int categoryId, string view)
{
    ViewBag.ViewType = view;
    return View();
}

然后在您的视图中访问@ViewBag.ViewType,您需要将其强制转换为字符串,因为它默认为objectViewBag是动态对象)。< / p>