MVC构建html页面但不显示它

时间:2016-11-08 12:18:38

标签: javascript c# html asp.net-mvc

我有关于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的新手,所以我很感激任何建议!

提前致谢并对我代码中的德语部分感到抱歉。

3 个答案:

答案 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();
        });

这很有效。再次感谢您的帮助。