我使用@ 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>
答案 0 :(得分:1)
MVC将此视为独立请求(就像您在地址栏中输入此操作一样)。这就是为什么在AbsolutePath中看到控制器而不是在地址栏中看到的原因。
您可以在操作中将查询字符串作为参数传递。
请参阅:https://stackoverflow.com/a/14152825/893543
OR
您用于生成页面的模型是否包含所需的一切?查询字符串是传递给构成页面的控制器的内容,只需将所需的属性添加到模型中?