【问题标题】:Partial View is not reloading using Jquery in MVC3部分视图未在 MVC3 中使用 Jquery 重新加载
【发布时间】:2015-01-05 15:36:48
【问题描述】:

我在 MVC3 中创建了一个应用程序,我想在单击按钮时重新加载局部视图,但局部视图没有更新。

ActionResult 方法

  public ActionResult CommentForPost(int postId)
    {
        var PostComments = _commentsRepository.GetCommentsByPostID(postId).Select(u => new CommentsViewModel()
       {
           CommentUserFullName = u.CommentUserFullName,
           CommenterEmailId = u.CommenterEmailId,
           CommenterSite = u.CommenterSite,

       }).ToList();

        return PartialView("PostedComments",PostComments);
    }

主视图内的部分视图

<div id="dvPostedComment">
@Html.Partial("PostedComments", Model.Post)
</div>

jQuery

           var postId = $("#hdnPostId").val();

            var d = "postId=" + postId;
            $.ajax({
                type: "POST",
                url: "/Comments/CommentForPost",
                data: d,
                success: function (r) {
                    $('#dvPostedComment').html(data);
                },
                complete: function () {
                    alert('hello2');
                },
                error: function (req, status, error) {
                    alert('helll3');
                }
            });

它总是进入错误部分。

任何人都可以帮助我。

【问题讨论】:

  • 在没有data: d, 的情况下尝试url: "/Comments/CommentForPost/" + postId,你为什么使用POST 请求这个?根据您的操作,您应该执行GET request
  • 在你的代码success: function (r),但你尝试插入$('#dvPostedComment').html(data);
  • 能否提供错误信息和状态?
  • Hi Grundy... 错误:内部服务器错误和状态:阻止此页面创建其他对话框。
  • 您是否尝试在您的CommentForPost 中设置断点?

标签: jquery asp.net-mvc-3


【解决方案1】:

请像这样尝试。我创建了一个小示例,它与您希望在代码中实现的完全相同。您可以通过两种方式执行此操作 - 使用 $.ajax() 或使用 $.load()。 $.load() 方法做你想做的事情。

_InnerPartial.cshtml

@model int
@{
     <h1>This is a partial view</h1>
     <h3>Your passed value=@Model</h3>         
}

控制器方法

[HttpPost]
    public PartialViewResult CallPartial(int value)
    {
        return PartialView("_InnerPartial", value);
    }

Index.cshtml

@{
ViewBag.Title = "Index";
}

<h2>Index</h2>

<div id="divPartial"></div>

<script>
$(document).ready(function () {
    AsyncAjaxCallback();
    //AsyncCallback();

});
function AsyncCallback() {
    var ctrl = $("#divPartial");
    var url = "/Example/CallPartial";

    if (url && url.length > 0) {
        ctrl.load(url, { value: 45 });
    }

}

function AsyncAjaxCallback() {
    $.ajax({
        type:"POST",
        url: "/Example/CallPartial",
        data: { value: 78 },
        success:function(result)
        {
            debugger;
            $("#divPartial").html(result);

        }
    });
}

</script>

有关详细信息,请参阅此链接。 http://dotnet-concept.com/Article/2014/8/15/How-to-load-partial-from-jquery-in-MVC

希望对你有帮助。

【讨论】:

    【解决方案2】:

    您正在尝试在部分视图 div 中加载“数据”,但“数据”不存在。 正如你提到的,ajax 调用的结果是 r。

    所以尝试使用

    success: function (r) {
                    $('#dvPostedComment').html(r);
                },
    

    如果您使用的是 $.get,请使用以下代码:

    $.get(url, 
         { "postId": PostId},
          function (data) { $('#dvPostedComment').html(data); 
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 2013-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多