Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MVC构建html页面,但不显示它_Javascript_C#_Html_Asp.net Mvc - Fatal编程技术网

Javascript MVC构建html页面,但不显示它

Javascript 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")',

我有一个关于Asp.net MVC的问题

我有一个Index.cshtml页面,其中包含以下javascript

      $('#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();
        });