2016-12-14 16 views
2

現在、Ajaxを使用してページ全体を更新することなく部分ビューを更新するのに問題があります。 MVCとエンティティ・フレームワークを使用してビューを足場にしています。AJAXが部分ビューを更新していません

私が試してみて、自分自身を説明するために、可能な限り含まれます:

私はすべての私のコメント

<div id="ContainAnnouncementComments"> </div> 

これのリストビューを保持するために使用されようとしているdiv要素を持っていますdivが使用して読み込まれます次:

:私のコントローラで BuildAnnouncementComment()メソッドを呼び出します

<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> 
    <script src="~/Custom_Scripts/BuildAnnouncement.js"></script> 
    @Scripts.Render("~/bundles/jqueryval") 

$(document).ready(function() { 
     $.ajax({ 
      url: '/Comments/BuildAnnouncementComment', 
      data: { AnnouncementId: @Model.AnnouncementId}, 
      success: function (result) { 
       $('#ContainAnnouncementComments').html(result); 
      } 
     }); 
    }); 

public ActionResult BuildAnnouncementComment(int? AnnouncementId) 
     { 
      return PartialView("_AnnouncementComment", db.Comments.ToList().Where(x => x.AnnouncementId == AnnouncementId)); 
     } 

私はその後、その後、アヤックスを使用してContainAnnouncementCommentsの更新「をすべきである」いくつかの情報を入力するユーザーのためのテキストボックスを保持するために使用される第2のdivコンテナがコール置き換えています

<div id="ContainAnnouncementCommentCreate"> 

     @using (Ajax.BeginForm("AJAXCreate", "Comments", new { announcementId = Model.AnnouncementId }, new AjaxOptions 
     { 
      InsertionMode = InsertionMode.Replace, 
      HttpMethod = "POST", 
      UpdateTargetId = "ContainAnnouncementComments" 
     })) 

     { 
      <div class="form-group"> 
       @Html.AntiForgeryToken() 

       <div class="col-md-10"> 
        @Html.EditorFor(model => model.Message, new { htmlAttributes = new { @class = "form-control" } }) 
        @Html.ValidationMessageFor(model => model.Message, "", new { @class = "text-danger" }) 
       </div> 
      </div> 
     } 

    </div> 

にAjaxの方法をコントローラでAJAXCreateメソッドを呼び出します:ここから

public ActionResult AJAXCreate(int announcementId, [Bind(Include = "CommentId, Message")] Comment comment) 
     { 
      if (ModelState.IsValid) 
      { 
       comment.UserId = User.Identity.GetUserId(); 
       comment.AnnouncementId = announcementId; 
       db.Comments.Add(comment); 
       db.SaveChanges(); 
      } 

      return PartialView("_AnnouncementComment", db.Comments.ToList()); 
     } 

を実行しているとき、私は新しいコメントを作成しようとするが、代わりにpartialViewが更新されるので、提出されたときに、表示されていることすべてがpartialviewです。

私はこれを正しく説明しているかどうか分かりません。情報が不足している場合はお知らせください。

+0

** jquery-unobtrusive-ajax.js **ファイルが不足しています。マスターレイアウトに含めてください。 –

+0

は、エンティティの足場で生成された私の.cshtml詳細ビューにあります。私はちょうど質問にそれを含めなかった、申し訳ありません。私はすべて私ののものを含むように更新します。 –

+0

ビューがネストされたディレクトリにある場合、URLが正しくない可能性があるので、 '' ''のようにします、pleseはあなたのレイアウトファイルを表示します。他の従属jsファイルも** jquery.unobtrusive-ajax.min.jsとしてロードしていますか?**おそらく依存関係があります –

答えて

0

私のコードを3時間見て、実際には実装に間違いがないことを認識しました.NuGetマネージャーからAJAXをインストールしていないということは間違っていました。

寄付