ASP.NET MVC AJAX重定向到新页面

时间:2017-08-01 10:31:05

标签: asp.net-mvc

我在网站上有一个按钮 - 如果点击 - 应该将一些数据传递给控制器​​并重定向到另一个视图。我尝试使用AJAX并意识到它不起作用,因为它无法重定向到另一个视图。

我阅读了一些建议使用JavaScript的帖子,但是没有一个模型传递给View也是如此(可能我只是愚蠢......)。

现在它看起来像这样:

function buttonClick() {
    $.ajax({
        type: 'POST',
        url: '/Backup/Timestamp',
        data: {iniName: selectedFile}
    });
}

public ActionResult Timestamp(string iniName)
{
    //some code

    return View(Model);
}

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

使用@ Url.Action

代替ajax
// creates a url like this <domain>/Backup/Timestamp
// This should be in the cshtml
<script>
   var baseurl = '@Url.Action("Timestamp", "Backup")'; 
</script>

// in your custom js file which should added below the baseurl initialization
function buttonClick() {
    location.href = baseurl +'?iniName=' + selectedFile 
}

@Url.Action()方法在服务器端进行处理。它将获取您的操作方法的路径。然后将参数连接到该URL并简单地重定向到它

答案 1 :(得分:1)

点击按钮,您可以将页面重定向到某个get方法。所以你的参数&#39; iniName&#39;将作为查询字符串而不是请求正文传递。

因为如果使用 GET 方法,所有参数都将作为查询字符串传递。如果是 POST 方法,那么它将作为请求正文发送。

所以我觉得在你的情况下Get就足够了。所以你需要做的是,你需要更换&#34;按钮点击&#34;功能如下。

function buttonClick() {
    location.href = '@Url.Action("Timestamp", "Backup")'+'?iniName=' + selectedFile 
}

答案 2 :(得分:0)

您可以将Ajax Action链接用作:

@Html.ActionLink("Edit", // <-- Link text
                 "Edit", // <-- Action Method Name
                 new { id=item.CustomerID }, // <-- Route arguments
                 new {@class="ui-btn", data_val="abc"} // <-- htmlArguments
                )

有关使用Ajax Action链接的完整详细信息,请访问link