jQueryUI ダイアログを使用して、一致したデータのリストを表示し、選択したデータを JSON 経由で ajax/jquery を使用して元のビューに戻そうとしています。
フローは、表示 (ユーザーがテキストボックスに入力してハイパーリンクをクリック) > jQuery ダイアログでの部分表示 > JSON データをフォームに戻すことです。
私の最初の質問は:-
Q. これは可能であるべきですか、それとも不可能なことをしようとしていますか?
それが機能する必要がある場合、ここに私のコードがあります
インデックス ビュー
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@Html.TextBox("Postcode") <a href="#" id = "PCSearch">Search</a>
<div id="mDialog"></div>
<script type="text/javascript">
$(document).ready(function () {
$("#mDialog").dialog({
modal: true,
width: 550,
height: 250,
resizable: true,
position: 'center',
title: 'Select Correspondent',
autoOpen: false,
dataType: 'json',
//open: function (event, ui) { $(".ui-dialog-titlebar-close").hide(); },
success: function (data) {
}
});
$('#PCSearch').click(function (e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "/Item/Search",
dataType: 'html',
data: { Postcode: $("#Postcode").val() },
success: function (data) {
$("#mDialog").html(data).dialog('open');
console.log("Hello");
}
});
});
});
</script>
アイテムコントローラー
[HttpPost]
public ActionResult Search(string postcode)
{
if (postcode == null || postcode == "")
{
return PartialView("SearchByPostCode", null);
}
var model = Correspondents.Where(x => x.Postcode.ToLower().Contains(postcode.ToLower()));
return PartialView("SearchByPostCode", model);
}
[HttpPost]
public ActionResult ChooseCorrespondent(int CorrespondentID)
{
return Json(CorrespondentID, "text/html");
}
フローは正常に機能しています。ユーザーがテキストを入力すると、Item/Search PartialView がモーダル ダイアログに表示されます。ユーザーがボタンを選択すると、ChooseCorrespondent がヒットしますが、ページは CorrespondentID を含む空白の画面にリダイレクトされます。呼び出しページ。
JSON をキャッチして Index ビューを更新するために多くの例とメソッドを試しましたが、失敗 (エラー) するか、Json を空白のページに返します。
Q. このような状況で Json の戻り値をキャッチする最適な方法は何ですか?
ここまで読んでくれてありがとう!
アップデート
私はjavascriptを次のように組み合わせました:
$(document).ready(function () {
$('#PCSearch').click(function (e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "/Item/Search",
dataType: 'html',
data: { Postcode: $("#Postcode").val() },
success: function (data) {
$("#mDialog").html(data).dialog({
modal: true,
width: 550,
height: 250,
resizable: true,
position: 'center',
title: 'Select Correspondent',
autoOpen: false
}).dialog('open');
//How can I trap the Json returned from this dialog open?
//Using a bindForm function ?
}
});
});
});
返された Json をトラップして元のページを更新しようとしています。