現在の部分ビューのクリックアクションで、現在の部分ビューの代わりに2番目の部分ビューをロードしたいと思います。
これは、テーブルビューが最初の部分ビューである私のメインビューです。
既存の部分ビューの代わりに、管理リンクをクリックして別のテーブル(別のビュー)をロードしたい。要するに、テーブルグリッドビューのマスターと詳細の関係。
だから質問は
1)それはできますか?
2)はいの場合、どちらのアプローチを選択する必要がありますか
以下のアプローチを使用しようとしていますが、メインレイアウトなしで2番目の部分ビューのみをロードしているため、機能しません。私のメインのインデックスビュー、
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-heading">
User Role Management
</div>
<!-- /.panel-heading -->
<div class="panel-body" id="Data">
<div class="panel-body" id="divUserRoleMappingMaster">
@Html.Partial("pv_UserRoleMappingMaster", Model)
</div>
@if (ViewBag.IsDetailView == "True")
{
<div class="panel-body" id="divManageUserRole">
@Html.Partial("pv_ManageUserRole", Model)
</div>
}
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
3)他のより良いアプローチがあれば、提案してください
簡単な解決策は、@ Ajax.ActionLinkを使用して2番目の部分ビューをロードすることです。
ここで、Manage
リンクはを使用@Ajax.ActionLink
して入力され、応答コンテンツはで言及されているターゲットで更新されUpdateTargetId
ます。
@Ajax.ActionLink(
"Manage",
"pv_ManageUserRole",
"<CONTROLLER>",
new AjaxOptions { UpdateTargetId = "<FIRST PARTIAL VIEW CONTAINER ID>" }
)
AJAXの追加には、以下のJSを含める必要があります。
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")"
type="text/javascript"></script>
または、Simple AJAXCallを使用して実行することもできます。
click
イベントをリンクの管理にバインドし、AJAX呼び出しを実行します
$("<Manage Link>").click(function(){
$.ajax({
type: 'POST',
url: '@Url.Action("pv_ManageUserRole", "<CONTROLLER>")'
data: '<POST Parameters if any>',
success: function (data){
//validate the response data and then load
$("#<FIRST PARTIAL VIEW CONTAINER ID>").html(data);
},
});
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加