Javascript MVC构建html页面,但不显示它
我有一个关于Asp.net MVC的问题 我有一个Index.cshtml页面,其中包含以下javascriptJavascript MVC构建html页面,但不显示它,javascript,c#,html,asp.net-mvc,Javascript,C#,Html,Asp.net Mvc,我有一个关于Asp.net MVC的问题 我有一个Index.cshtml页面,其中包含以下javascript $('#employeeTable tbody').on('dblclick', 'tr', function() { var mitarbeiterId = table.row(this).data().Id; $.post('@Url.Action("IndexCompletion")',
$('#employeeTable tbody').on('dblclick', 'tr', function() {
var mitarbeiterId = table.row(this).data().Id;
$.post('@Url.Action("IndexCompletion")', { id: mitarbeiterId });
});
这基本上只是获取一个员工的id,并在我的控制器中调用这个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>
@model Leistungserfassung.Models.IndexCompletionViewModel
@{
ViewBag.Title=“完成”;
Layout=“~/Views/Shared/_Layout.cshtml”;
}
完成
@Model.Mitarbeiter.Nachname
但现在发生的是,它成功地构建了页面,正如我在谷歌Chromes开发工具的“网络”选项卡上看到的那样,但没有重定向到它。
另外,当我直接尝试导航到此.cshtml文件时,浏览器会告诉我找不到它
有没有人知道这件事会有什么问题?
我对javascript非常陌生,所以非常感谢您的建议
提前感谢并为我代码中的德语部分感到抱歉。您正在使用JavaScript对服务器进行异步ajax调用,这意味着JavaScript需要将用户重定向到另一个页面。因此,为了实现这一点,您的控制器post方法应该返回一个对JavaScript(最有可能是JSON)的响应,该响应将有一个重定向链接(键、值)项,然后进行重定向。我希望这对您有所帮助
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);
},
});
谢谢你们的帮助。
现在我了解了$.post创建了一个AJAX调用,我修改了代码,在双击时创建了一个表单,并用我的Id提交它。
(解决这个问题的更好方法是什么)
$('employeeTable tbody')。在('dblclick','tr',function(){
var mitarbeiterId=table.row(this.data().Id;
$('' +
'' +
'')。提交();
});
这很有效。再次感谢您的帮助。进行ajax调用的全部目的是保持在同一页面上。如果你想进入一个新页面,不要使用ajax。不使用ajax的情况下,完成这样的Post调用的正确方法是什么?我不知道$.Post是ajax调用的简写形式。只要有一个带有提交按钮的表单(在您的例子中有多个表单)我正在尝试使用datatables的双击事件,如果我尝试提交表单会是什么样子?您可以在
双击()
处理程序中始终调用.submit()
事件(但这是一个糟糕的用户界面,因此建议您不要这样做)我甚至不知道$.post()创建一个异步ajax调用。我真的希望我可以直接传递对象。如果我让它运行,我将尝试您的解决方案并发布它!感谢这是jQuery中的简写版本。服务器需要发回一条成功消息,您的ajax调用应该用作回发。
$('#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();
});