現在、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です。
私はこれを正しく説明しているかどうか分かりません。情報が不足している場合はお知らせください。
** jquery-unobtrusive-ajax.js **ファイルが不足しています。マスターレイアウトに含めてください。 –
は、エンティティの足場で生成された私の.cshtml詳細ビューにあります。私はちょうど質問にそれを含めなかった、申し訳ありません。私はすべて私ののものを含むように更新します。 –
ビューがネストされたディレクトリにある場合、URLが正しくない可能性があるので、 '' ''のようにします、pleseはあなたのレイアウトファイルを表示します。他の従属jsファイルも** jquery.unobtrusive-ajax.min.jsとしてロードしていますか?**おそらく依存関係があります –