【问题标题】:Render partial view with JQuery / AJAX使用 JQuery / AJAX 渲染局部视图
【发布时间】:2014-08-07 22:11:06
【问题描述】:

我尝试渲染部分视图并在 div 元素之间放置。 我读了几篇文章,例如 Rendering a partial view with jquery 但还是不行。

我哪里出错了?

A.) 我要渲染局部视图的位置:

<div id="target">

        </div>

如果我在和@Html.Partial() 之间输入错误!

B.) 我如何调用控制器操作:

 $("#target").load('@Url.Action("GetMessageTypeView", "EmailMessages")');

我也试过了:

$.ajax({
        url: '@Url.Action("GetMessageTypeView", "EmailMessages")',
        type: "POST",
    contentType: "application/json; charset=utf-8",
    success: function (data) {
        $('#target').html(data);
    }
});

在这两种情况下,我都调用了控制器动作,但没有结果。

C.) 我的控制器操作:

public ActionResult GetMessageTypeView()
    {
        return PartialView("Partials/MessageTypes");
    }

我在哪里做错了? 是否可以在没有呼叫控制器的情况下呈现部分视图并将其放置在页面中的某个位置? 谢谢

【问题讨论】:

  • 您的 div 格式错误。使用&lt;div id='target'&gt;&lt;/div&gt;。
  • 没有帮助。这有什么问题:
    ?我总是这样使用,并且这种格式有效。
  • 你为什么要使用 javascript 而不仅仅是使用@Html.Partial()? (action 方法似乎没有以任何方式修改局部视图)
  • 我必须在单击按钮时插入部分视图。你有什么想法来完成这个吗?
  • 这没有意义,因为您没有将任何参数传递给GetMessageTypeView(),因此您返回的视图将始终相同(因此为什么不最初加载它)。但是.load() 方法似乎没有任何问题(有关.ajax() 方法的问题,请参阅Phaeze 答案。我怀疑它的视图或视图名称。在GetMessageTypeView() 中放置一个断点并检查它是否被命中。 PS. 要回复评论,请在前面加上“@Stephen..”

标签: jquery ajax asp.net-mvc


【解决方案1】:

没有看到您提到的错误,我确实看到您的代码有一个问题,您的 ajax 调用中的内容类型不正确,应该是:

$.ajax({
        url: '@Url.Action("GetMessageTypeView", "EmailMessages")',
        type: "POST",
    contentType: "text/html; charset=utf-8",
    success: function (data) {
        $('#target').html(data);
    }
});

jquery 期望从服务器返回 json,但是当它获取部分视图的 html 时,它不知道如何处理它。我最近遇到了这个问题,我什至没有收到错误,只是没有做任何事情。

【讨论】:

    猜你喜欢
    • 2011-04-08
    • 2011-11-17
    • 1970-01-01
    • 2023-03-30
    • 2010-10-19
    • 2016-01-03
    • 2018-01-16
    • 1970-01-01
    相关资源
    最近更新 更多