如何在局部视图中获取浏览器查询字符串

时间:2019-02-21 19:30:55

标签: c# asp.net-mvc razor

我使用@ Html.Action()创建局部视图,如下所示:

@Html.Action("Index", "AreaMenu", new { Area = "" })

在局部视图的控制器中,我想获取浏览器的查询字符串,不幸的是,如果我尝试从System.Web.HttpContext.Current.Request.Url.AbsolutePath中获取它,我将获得控制器的URL,而不是地址栏中的内容。

我怎么得到这个?

@inherits System.Web.Mvc.WebViewPage
@using System.Web.Mvc.Html;
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<script>
    var location = window.location;
</script>
<div class="row">
    @Html.Action("Index", "AreaMenu", new { Area = "" })
    <!--Start Content-->
    <div id="content" class="col-xs-12 col-sm-10">
        <div id="ajax-content">
            <!--Start Breadcrumb-->
            <div class="row">
                <div id="breadcrumb" class="col-xs-12">
                    <ol class="breadcrumb pull-left">
                        <li>
                            <a href='@Url.Action("Index", "Home", new { area = "" })'>
                                <i class="fa fa-home"> </i> Nuclei
                            </a>
                        </li>
                        <li>
                            <a href='@Url.Action("Index", "Home", new { area = (string)ViewBag.AreaName })'>@ViewBag.CurrentModule.Name</a>
                        </li>
                        <li>
                            <a href=''>@ViewBag.AreaView</a>
                        </li>
                    </ol>
                </div>
            </div>
            <!--End Breadcrumb-->
            @RenderBody()
        </div>
    </div>
    <!--End Content-->
</div>

1 个答案:

答案 0 :(得分:1)

MVC将此视为独立请求(就像您在地址栏中输入此操作一样)。这就是为什么在AbsolutePath中看到控制器而不是在地址栏中看到的原因。

您可以在操作中将查询字符串作为参数传递。

请参阅:https://stackoverflow.com/a/14152825/893543

OR

您用于生成页面的模型是否包含所需的一切?查询字符串是传递给构成页面的控制器的内容,只需将所需的属性添加到模型中?