私はこれを行うためにAJAXを使用しています。あなたはあなたの典型的なツイッターモーダルテンプレートhtmlであなたの部分を持っています:
<div class="container">
<!-- Modal -->
<div class="modal fade" id="LocationNumberModal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">
×
</button>
<h4 class="modal-title">
Serial Numbers
</h4>
</div>
<div class="modal-body">
<span id="test"></span>
<p>Some text in the modal.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">
Close
</button>
</div>
</div>
</div>
</div>
</div>
次に、コントローラーメソッドがあります。JSONを使用し、ビューを文字列に変換するカスタムクラスがあります。これを行うのは、1回のajax呼び出しで画面上で複数のajax更新を実行できるようにするためです。ここでの参照:例ですが、1回の呼び出しだけを実行している場合は、戻り時にPartialViewResult/ActionResultを使用できます。JSONを使用して表示します。
そしてコントローラーのJSONメソッド:
public JsonResult LocationNumberModal(string partNumber = "")
{
//Business Layer/DAL to get information
return Json(new {
LocationModal = ViewUtility.RenderRazorViewToString(this.ControllerContext, "LocationNumberModal.cshtml", new SomeModelObject())
},
JsonRequestBehavior.AllowGet
);
}
次に、モーダルを使用するビューで、AJAXをパーシャルにパッケージ化して@ {Html.RenderPartial ...を呼び出すことができます。または、divを使用してプレースホルダーを作成することもできます。
<div id="LocationNumberModalContainer"></div>
その後、あなたのajax:
function LocationNumberModal() {
var partNumber = "1234";
var src = '@Url.Action("LocationNumberModal", "Home", new { area = "Part" })'
+ '?partNumber='' + partNumber;
$.ajax({
type: "GET",
url: src,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
$("#LocationNumberModalContainer").html(data.LocationModal);
$('#LocationNumberModal').modal('show');
}
});
};
次に、モーダルへのボタン:
<button type="button" id="GetLocBtn" class="btn btn-default" onclick="LocationNumberModal()">Get</button>