【问题标题】:Update Partial View with Ajax使用 Ajax 更新局部视图
【发布时间】:2014-03-12 06:22:33
【问题描述】:

我有以下详细信息的部分视图,

_PartialTEST.cshtml

@model FreeLance.Web.Models.PArtialTESTModel

@Html.RadioButtonFor(m => m.D1, "true", new { Name = "test1", @id = "g1", @checked = "true" }) @Html.LabelFor(m => m.MSGD1, @Model.V1)
@Html.RadioButtonFor(m => m.D2, "false", new { Name = "test1", @id = "g2" }) @Html.LabelFor(m => m.MSGD2, @Model.V1) 
@Html.RadioButtonFor(m => m.D3, "false", new { Name = "test1", @id = "g3" }) @Html.LabelFor(m => m.MSGD3, @Model.V1) 

在另一个视图中使用,

MainTEST.cshtml

<div id="partialDIV">
       @{
           @Html.Partial("_PartialTEST", Model)
       }                           
</div>

现在在活动期间,我正在尝试使用 AJAX

获取新值
$.ajax({
                type: "GET",
                url: href,               
                traditional: true,
                async: false,
                cache: false,
                contentType: 'application/json',
                data: { DID: DID },
                success: function (data) {
                    debugger;
                    $('#partialDIV').html(data);
                },
                error: function (arg, data, value) {

                }
            });

现在虽然“数据”具有所有值,但我无法渲染部分视图。任何帮助,我在这里缺少什么?

【问题讨论】:

  • 试试这个`数据:{ "DID": DID },`
  • 感谢您的帮助,但是,我可以使用值 DID 访问 ajax 方法,并且还可以使用 Model 值返回 Ajax 的 Success 部分,所以之后我可能会遗漏一些东西...

标签: jquery ajax asp.net-mvc partial-views


【解决方案1】:

通过将数据类型添加为“html”来更改您的 AJAX 查询

 $.ajax({
        type: "GET",
        url: href,               
        traditional: true,
        async: false,
        cache: false,
        contentType: 'application/json',
        datatype : "html",
        data: { DID: DID },
        success: function (data) {
            debugger;

            $('#partialDIV').empty();
            $('#partialDIV').html(data);
        },
        error: function (arg, data, value) {

        }
    });

【讨论】:

  • 谢谢我和那个兄弟一起尝试过:)
  • 返回的数据是什么?
  • 谢谢,在 Rahul 提到的修改后的解决方案中,我确实需要将数据类型提到为 HTML。谢谢
【解决方案2】:

在服务器端使用此代码返回您的部分视图::

    public PartialViewResult MainTEST()
    {
        var model = new FreeLance.Web.Models.PArtialTESTModel();
        return PartialView("_PartialTEST.cshtml",model);
    }

在客户端的 AJAX 中对其成功进行一些更改::

$.ajax({
            type: "GET",
            url: href,               
            traditional: true,
            async: false,
            cache: false,
            contentType: 'application/json',
            data: { DID: DID },
            success: function (data) {
                debugger;

                $('#partialDIV').empty();
                $('#partialDIV').html(data);
            },
            error: function (arg, data, value) {

            }
        });

【讨论】:

  • 非常感谢,正如@Jojy 提到的,我还应该将数据类型添加为 HTML。
【解决方案3】:

【讨论】:

  • 感谢您的帮助 :) @Ajax.ActionLink 提供了一些很好的信息。这对我来说很新鲜......
  • 链接已失效
【解决方案4】:

您只是错过了一个参数 datatype ,即您必须将数据类型指定为控制器函数返回的类型,由于您期望使用部分视图,因此您必须将数据类型指定为 html。

    .ajax({
            type: "GET",
            url: href, 
            async: false,
            cache: false,
            contentType: 'application/json',
            datatype:'html',
            data: { DID: DID },
            success: function (data) {
                debugger;
                $('#partialDIV').html(data);
            },
            error: function (arg, data, value) {

            }
        });

这可以解决你的问题

【讨论】:

  • 感谢 Hamid,同样来自后面的代码,我返回的是 json,而不是 Action 结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
相关资源
最近更新 更多