我在网站上有一个按钮 - 如果点击 - 应该将一些数据传递给控制器并重定向到另一个视图。我尝试使用AJAX并意识到它不起作用,因为它无法重定向到另一个视图。
我阅读了一些建议使用JavaScript的帖子,但是没有一个模型传递给View也是如此(可能我只是愚蠢......)。
现在它看起来像这样:
function buttonClick() {
$.ajax({
type: 'POST',
url: '/Backup/Timestamp',
data: {iniName: selectedFile}
});
}
public ActionResult Timestamp(string iniName)
{
//some code
return View(Model);
}
感谢您的帮助!
答案 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