私の目的
jquery ファイル ( otf.js ) で非同期呼び出しを行い、ホームページ ( index.cshtml )のレストラン リストを更新して、レストランの結果をフィルタリングするフォームに入力された検索用語を使用します。 otf.jsはバンドルされており、レイアウト ビューでレンダリングされます。
私の問題
検索語を入力してフォームを送信すると、リストは期待どおりに更新されますが、新しい検索語を入力して [送信] をクリックしても、リストは変更されません。新しい検索結果を入力して [送信] をクリックするたびに変更する必要があります。
私のソースコード
otf.js
$(function () {
var ajaxFormSubmit = function () {
var $form = $(this);
var options = {
url: $form.attr("action"),
type: $form.attr("method"),
data: $form.serialize()
};
$.ajax(options).done(function (data) {
var $target = $($form.attr("data-otf-target"));
$target.replaceWith(data);
});
return false;
};
$("form[data-otf-ajax='true']").submit(ajaxFormSubmit);
});
index.cshtml
@model IEnumerable<OdeToFood.Models.RestaurantListViewModel>
@{
ViewBag.Title = "Home Page";
}
<hr />
<form method="get" action="@Url.Action("index")"
data-otf-ajax="true" data-otf-target="#restaurantList">
<input type="search" name="searchTerm" />
<input type="submit" value="Search By Name" />
</form>
<div id="restaurantList">
@Html.Partial("_Restaurants", Model)
</div>
_Restaurants.cshtml (部分ビュー)
@model IEnumerable<OdeToFood.Models.RestaurantListViewModel>
@foreach (var item in Model)
{
<div>
<h4>@item.Name</h4>
<div>
@item.City, @item.Country
</div>
<div>
Reviews: @item.CountOfReviews
</div>
<hr />
</div>
}