私はMVC4を使用しています。プロジェクトで控えめなJavaScriptが有効になり、参照されています。Ajaxスクリプトが共有マスターページに読み込まれています。FireBugはエラーまたは404を報告しません。
フォーム内のフィールドText
の内容を更新するボックスをページに追加しました。ユーザーがキーを押してイベントが発生すると、次のように呼び出してフォームを強制的に送信します。Hidden
Ajax
KeyUp
Ajax
$("form#ajaxForm").trigger("submit");
ここで、 ajaxFormはAjaxフォームの名前です。これは正常に機能します。フォームがバックグラウンドで送信され、コントローラーイベントが発生します。モデルは、ユーザーからの入力に基づいて、新しいデータで更新されます。
しかし、それが奇妙になるのは、結果が私のフォームに戻るときです。フォームタグのコンテンツ全体div
が、ページ全体である結果に置き換えられます。
<div id="basic-modal-content"">
<input id="breed" type="text"/>
<div>
<form id="ajaxForm" method="post" data-ajax-update="#results" data-ajax-mode="replace" data-ajax="true" action="/Poultry/ListBreeds?Length=7">
<div id="results">
->THIS AREA IS GETTING REPLACED WITH THE ENTIRE FORM <-
<div id="basic-modal-content">
</div>
</div>
</form>
- basic-modal-contentに、別のbasic-modal-contentが含まれていることに注目してください。結果divには、ビュー全体ではなく、更新結果のみを含める必要があります。明らかに。
私のコードは次のとおりです。
ビュー(BreedSelectorPartial.cshtml)
@model IQueryable<Inert.BreedViewModel>
<script type="text/javascript">
$(document).ready(function () {
$("#breed").keyup(function (e) {
$("input[name=breedSearch]").val($("#breed").val());
$("form#ajaxForm").trigger("submit");
});
});
</script>
<div id="basic-modal-content">
<input id="breed" type="text" style="width:100%; height:22px;" />
<div>
<div style="margin-top: 4px;">
<label for="breed">Begin by typing a breed, e.g. <span style="font-style: italic">Wyandotte</span></label>
</div>
</div>
@using (Ajax.BeginForm("ListBreeds", "Poultry", new AjaxOptions {UpdateTargetId = "results" }, new { id = "ajaxForm" }))
{
<input id="breedSearch" name="breedSearch" type="hidden" />
}
<div id="results" style="height: 320px; color: black; margin-top: 12px; font-size: 18px;">
@{
var grid = new WebGrid(Model, ajaxUpdateContainerId: "results");
int c = Model.Count();
}
@grid.GetHtml(tableStyle: "webgrid",
alternatingRowStyle: "webgrid-alternating-row",
rowStyle: "webgrid-row-style",
displayHeader: true)
</div>
</div>
<script type="text/javascript" src="/scripts/jquery.simplemodal.js"></script>
<script type="text/javascript" src="/scripts/basic.js"></script>
コントローラー(PoultryController.cs)
[HttpPost]
public ActionResult ListBreeds(string breedSearch)
{
InertDatabaseEntitiesConnection db = new InertDatabaseEntitiesConnection();
var breeds = db.Breeds.Where(q => q.Name.Contains(breedSearch));
var names = breeds.Select(q => new BreedViewModel { Name = q.Name });
return PartialView("BreedSelectorPartial", names);
}
これでどこが間違っているのかわかりません。私はこれを理解しようと何時間も費やしました。解決策はありますか?