我有关于Asp.net MVC的问题。
我有一个带有以下javascript的Index.cshtml页面
$('#employeeTable tbody').on('dblclick', 'tr', function() {
var mitarbeiterId = table.row(this).data().Id;
$.post('@Url.Action("IndexCompletion")', { id: mitarbeiterId });
});
这基本上只是让我获得了员工的id并在我的Controller中调用了这个ActionResult
[HttpPost]
public ActionResult IndexCompletion(int id)
{
Mitarbeiter ma = new LeistungserfassungService.LeistungserfassungService().GetMitarbeiterById(id);
return View("IndexCompletion", new IndexCompletionViewModel{Mitarbeiter = ma});
}
现在我希望这将显示以下页面:
@model Leistungserfassung.Models.IndexCompletionViewModel
@{
ViewBag.Title = "Completion";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="content">
<h2>Completion</h2>
@Model.Mitarbeiter.Nachname
</div>
但现在发生的是,它可以成功构建页面,我可以在Google Chromes开发工具的网络选项卡上看到,但不会重定向到它。 此外,当我直接尝试导航到此.cshtml文件时,浏览器告诉我无法找到它。
有没有人知道这可能是什么问题? 我是javascript的新手,所以我很感激任何建议!
提前致谢并对我代码中的德语部分感到抱歉。
答案 0 :(得分:0)
您正在使用JavaScript对服务器进行异步ajax调用,这意味着JavaScript需要将用户重定向到另一个页面。因此,为了实现这一点,您的控制器post方法应该返回对JavaScript(很可能是JSON)的响应,该响应将具有重定向链接(键,值)项,然后重定向。
答案 1 :(得分:0)
我希望这会对你有所帮助。
var jsonObj = JSON.stringify({
'id': mitarbeiterId
});
$.ajax({
url: '@Url.Action("IndexCompletion")',
type: "Post",
data: jsonObj,
async: false,
contentType: "application/json; charset=utf-8",
success: function (data) {
$("#divForReturnedViewFromController").html(msg);
},
});
答案 2 :(得分:-1)
感谢您的帮助。 现在我明白了$ .post创建了一个AJAX调用,我改变了我的代码,在Doubleclick上创建了一个表单并用我的Id提交。 (这是解决这个问题的更好方法)
$('#employeeTable tbody').on('dblclick', 'tr', function () {
var mitarbeiterId = table.row(this).data().Id;
$('<form action=@Url.Action("IndexCompletion") method="POST">' +
'<input type="hidden" name="id" value="' + mitarbeiterId + '">' +
'</form>').submit();
});
这很有效。再次感谢您的帮助。