我需要获取请求URL(页面/actionMethod的URL来自)
当我单击我的任何一个a href
时,您都可以从我的Language
控制器来调用ApplySelectedLanguage
ActionResult
。
我想通过添加一个将要提交的隐藏字段来解决此问题,我可以轻松阅读路径,这样的东西:" <%= Html.Hidden("requestUrl", Request.RawUrl) %>
"
,但我不知道在此示例中可以放在哪里,所以我可以将其发布回
<ul class="dropdown-menu custom-dropdown-menu">
<li><a href="@Url.Action("ApplySelectedLanguage", "Language", new { Lcid = "1050" })"><%= Html.Hidden("requestUrl", Request.RawUrl) %>EN</a></li>
<li><a href="@Url.Action("ApplySelectedLanguage", "Language", new { Lcid = "3098" })"><%= Html.Hidden("requestUrl", Request.RawUrl) %>DE</a></li>
</ul>
我知道它可以使用
在服务器端解决 HttpContext.Request.UrlReferrer
,
,但我想用隐藏的字段来解决它。
[HttpPost]
public ActionResult ApplySelectedLanguage(string requestUrl, int Lcid)
{
// requestUrl will contain the url of the page used to
// render the form
...
}
您应该在 href
属性中添加 Html.Hidden("requestUrl", Request.RawUrl)
值:
<script>
$(document).ready(function () {
$('.dropdown-menu.custom-dropdown-menu').find('a').attr("href", function () {
return this.href + $('#requestUrl').val();
});
});
</script>
但是,正如@stephen Muecke所说的更好的方法是将requestUrl
添加到@Url.Action
:
href = "@Url.Action("ApplySelectedLanguage", "Language", new { Lcid = "1050", requestUrl = Request.RawUrl })"