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

MVC builds html page but does not show it

本文关键字:显示 构建 html 页面 MVC      更新时间:2023-09-26

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

我有索引。javascript

的CSHTML页面
      $('#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>

但是现在发生的是,它成功地构建了页面,正如我在谷歌chrome开发工具的网络选项卡上看到的那样,但没有重定向到它。另外,当我直接尝试导航到这个。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').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();
        });

这个效果很好。再次感谢您的帮助。