当我从我的href调用ActionResult时,如何提交隐藏字段值

时间:2017-09-20 09:01:52

标签: javascript html asp.net asp.net-mvc razor

我需要获取请求网址(Page / ActionMethod的网址来自)

当我点击a href我从我的ApplySelectedLanguage控制器中呼叫ActionResult Language时,你可以看到任何人。

我想通过添加一个可以提交的隐藏字段来解决这个问题,我可以轻松地读取路径, 像这样:“<%= 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
    ...
}

1 个答案:

答案 0 :(得分:0)

您应该在Html.Hidden("requestUrl", Request.RawUrl)属性中添加href值,如下所示:

<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 })"