مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

alone.m2a

عضویت از 1393/08/03

عدم اپدیت Partial View بعد ار ثبت کامنت با Ajax

  • دوشنبه 13 دی 1395
  • 21:20
تشکر میکنم

سلام من از پست =>>>> ارسال نظر به صورت Ajax در Asp.Net MVC
 استفاده کردم برای صفحاتم کامنت بزارم همه چی اوکیه اما موقعی ک نظری ثبت میشه پارشیال نظرات جداگانه تو صفحه نمایش داده میشه و url  به آدرس پارشیال تغییر میکنه.برای کامنت یک کنترل جداگانه در نظر گرفتم

_addnewcomment

@model Models.Comment

@using (Ajax.BeginForm("_AddNewComment", "Comments", new AjaxOptions()
{
    UpdateTargetId = "comment-box",
    OnSuccess = "Success",
    //HttpMethod = "POST",
    //InsertionMode = InsertionMode.InsertAfter
}))
{
    @Html.AntiForgeryToken()
    @Html.HiddenFor(m => m.ObjectID)
    @Html.HiddenFor(m => m.ObjectName)
    @Html.HiddenFor(m => m.ParentID)

    <div class="form-horizontal">

        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        
        <div class="form-group">
            <label class="control-label col-md-1 col-md-push-11">متن </label>
            <div class="col-md-5 col-md-push-5">
                @Html.TextAreaFor(model => model.Text, new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.Text, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="form-group">
            <div class="col-md-1 col-md-push-10">
                <input type="submit" value="ثبت " class="btn btn-default" />
            </div>
        </div>
    </div>
}

_Comment

<div id="comment-box">
    <h2 class="page-header">نظرات - @Model.Where(c => c.IsAccept == true).Count()</h2>
    @if (Model != null && Model.Count() > 0)
    {
        <ul class="media-list">

            @Comments()

        </ul>
    }
    @if (User.Identity.IsAuthenticated)
    {
        <h4 class="page-header">ثبت نظر</h4>
        @Html.Partial(MVC.Comments.Views._AddNewComment, new Comment() { ObjectID = ViewBag.objid, ObjectName = ViewBag.objname })
        
    }

</div>

js

<script>
    //function Success() {
    //    alert("aaaaaaaaaaa");
    //}
    function AddComment(ParentID) {
        
        jQuery.ajax({
            url: "/Comments/_AddNewComment",
            data: { pid: ParentID,objid:@objid,objname:"@objname" },
            type:"Get"
        }).done(function(result) {
            $('#Cm_' + ParentID).append(result);
        });
    }
 </script>

<style>

controller

 [HttpPost]
        public virtual ActionResult _AddNewComment(Comment c)
        {
            //save comment
            //q list commentha
            return PartialView(MVC.Comments.Views._Comment, q);
        }

پاسخ های این پرسش

تعداد پاسخ ها : 13 پاسخ
کاربر سایت

kaveh.norozi

عضویت از 1394/11/30

  • سه شنبه 14 دی 1395
  • 08:18

دوست عزیز:

کدتونو بذارین دوستان برنامه نویس بهتر میتونن کمکتون کنن!!!

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 14 دی 1395
  • 10:12

به احتمال زیاد مشکلوت رو Ajax هست

ایا کتابخانه زیر را رفرنس دادید ، بدون ان ممکن نیست

jquery.unobtrusive-ajax.min.js

کاربر سایت

alone.m2a

عضویت از 1393/08/03

  • سه شنبه 14 دی 1395
  • 11:13

jquery.unobtrusive-ajax.min.js

رو اضافه کردم الان ی مشکل دیگه هست ک div آپدیت نمیشه
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 14 دی 1395
  • 11:21

کد را قرار دهید

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 14 دی 1395
  • 12:56

شما در UpdatetargetID یک ID دادید

اون رو بررسی کنید که وجود داشته

قسمتی که بروز میشه اون آی دی هست

کاربر سایت

alone.m2a

عضویت از 1393/08/03

  • سه شنبه 14 دی 1395
  • 12:57

قرار دادم تو پست اول...

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 14 دی 1395
  • 13:03

من المانی با ID comment-box ندیدم

کاربر سایت

alone.m2a

عضویت از 1393/08/03

  • سه شنبه 14 دی 1395
  • 13:16

توی ویوی _Comment هست 

<div id="comment-box">
    <h2 class="page-header">نظرات - @Model.Where(c => c.IsAccept == true).Count()</h2>
    @if (Model != null && Model.Count() > 0)
    {
        <ul class="media-list">
 
            @Comments()
 
        </ul>
    }
    @if (User.Identity.IsAuthenticated)
    {
        <h4 class="page-header">ثبت نظر</h4>
        @Html.Partial(MVC.Comments.Views._AddNewComment, new Comment() { ObjectID = ViewBag.objid, ObjectName = ViewBag.objname })
         
    }
 
</div>

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 14 دی 1395
  • 13:20

کد ها به نظر درست میام

متاسفانه هرچی به ذهنم میرسید را بررسی کردیم

باید دیگه کد را Trace کنید تا مطمئن بشید همه موارد به درستی کار میکنند

کاربر سایت

alone.m2a

عضویت از 1393/08/03

  • سه شنبه 14 دی 1395
  • 13:22

خیلی ممنون 

کاربر سایت

alone.m2a

عضویت از 1393/08/03

  • سه شنبه 14 دی 1395
  • 18:23

سلام مجدد 

اون مشکل آپدیت  تا حدودی حل شد و نمیدونم هم دلیلش چی بود فقط برای بار اول یعنی وقتی اولین کامنت ثبت میشه div  آپدیت نمیشه  :|

- الان وقتی برا کامنتی ک والد هست پاسخ بزارم و دنبالش بخوام یه کامنت با والد 0 ثبت کنم  value ، ورودیhidden input  کامنت والد 0 با کامنت والد قبلی یکی میشه

<input data-val="true" data-val-number="The field ParentID must be a number." id="ParentID" name="ParentID" type="hidden" value="197">

- ی سوال دیگه اگ بخوام موقع پاسخ به کامنت یک عدد از ویو addcomment باز بشه چکار باید کرد؟الان هرچی دکمه پاسخ رو بزنم اون ویو تکثیر میشه.(غیر از راه غیر فعال کردن دکمه پاسخ)

ممنون

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 14 دی 1395
  • 19:51

متوجه سوال اول نشدم

کاربر سایت

alone.m2a

عضویت از 1393/08/03

  • چهارشنبه 15 دی 1395
  • 00:54

مشکل حل شد یکی از فیلدها داخل ویو null میشد برای همین خطا میداد

خیلی خیلی ممنونwink

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)