重定向到当前页面并在表单提交后附加查询字符串

时间:2013-09-15 17:46:39

标签: asp.net-mvc asp.net-mvc-4 razor umbraco

从我的表面控制器中,我希望将当前查询字符串附加到重定向操作。我似乎无法找到任何适当的方法来做到这一点。

表单从中发送的页面包含一个选项卡,该选项卡通过将查询字符串附加到URL来显示。表单是从此选项卡提交的,我希望感谢信息显示在同一个选项卡上。

查询字符串是#inquery

来自我的表面控制器:

[HttpPost]
public ActionResult HandleFormSubmit(InquiryFormModel model)
{
    if (!ModelState.IsValid)
    {
        return CurrentUmbracoPage();
    }

    // Mail date goes here...

    TempData["success"] = true;

    return RedirectToCurrentUmbracoPage();
}

正如您所猜测的那样,我希望将#inquery附加到RedirectToCurrentUmbracoPage()方法返回的URL中。

谢谢!

1 个答案:

答案 0 :(得分:0)

返回当前页面的位置,添加一个包含查询字符串的viewbag对象。将此字段存储在HTML中的隐藏输入中,并对其进行客户端javascript测试,并将其附加到URL(如果存在)。

if (!ModelState.IsValid)
{
    ViewBag.URLString = "stringhere"
    return CurrentUmbracoPage();
}

然后在你的HTML中。

<input id="URLString" type="hidden" />

在你的javascript中(如果你使用的是jQuery)

$(document).ready(function(){
    window.location.href += $("#URLString").val();
});

我还没有完全限定这段代码,所以它不能正常工作,但它还有更多可以让你有所了解。