管理者がユーザー名を入力してユーザーになりすますことができる管理機能を自分のサイトに実装しようとしています (表示内容を確認するため)。
これはすべてのページにあるため、現在、_Layoutマスタービューの_LogOn部分ビューでjQueryUiダイアログとしてこの設定をしています。ただし、これまで対処したことのない問題がいくつかあるため、この時点で何をすべきかわかりません。
1)入力されたユーザー名が存在するかどうかを確認するためにチェックを実行する必要があります。存在しない場合は、ダイアログのフォームにメッセージを表示する必要があります。
2)送信後、ページ全体をリロードする必要があります(したがって、新しいユーザーの更新により表示される内容が変更されます)。
3) ページがリロードされると、ボックスが再び開いて表示されます。ダイアログフォームが送信された後。
したがって、パーシャルにはコントローラーがないため、これを実装する方法がわかりません。また、送信がその特定のフォームからのものであるかどうかに基づいてjqueryボックスを再表示する方法も、パーシャルがそうでないときにエラーメッセージを表示する方法もわかりません。 t はモデルに基づいています。次に、フォームをAJAXにすることを考えましたが、表示を更新するには最終的にページ全体をリロードする必要があるため、その方法もわかりません。
デフォルトのコード以外の _LogOn パーシャルへの追加:
if (SessionUtil.IsSiteAdmin)
{
<button id="impersonate" style="position: relative; right: 20px; float: left; top: -30px;">Impersonate</button>
<div id="impersonate-user" title="Admin User Impersonation">
@using (Html.BeginForm())
{
<p>Currently Impersonating:
@if (SessionUtil.User.Id != SessionUtil.UserAbsolute.Id)
{
<text>
@SessionUtil.User.FirstName @SessionUtil.User.LastName (@SessionUtil.User.NetId)
</text>
}
else
{
<text>None</text>
}
</p>
<p>@Html.ActionLink("Stop Impersonating", "StopImpersonating", "Shared", new { area = "", @class = "ui-button ui-widget ui-state-default ui-corner-all" })</p>
<div>
<div id="ValidationSummary">
@Html.ValidationSummary(true)
</div>
<fieldset>
<div class="editor-label">
@Html.Label("Username to Impersonate")
</div>
<div class="editor-field">
@Html.TextBox("Username")
</div>
<p>
<input type="submit" value="Impersonate"/>
</p>
</fieldset>
</div>
}
</div>
}
JS:
<script type="text/javascript">
$("#impersonate-user").dialog({
autoOpen: false,
modal: false,
width: 400,
height: 505,
closeOnEscape: true,
resizable: false,
draggable: true
});
$("#impersonate")
.button()
.click(function () {
$("#impersonate-user").dialog("open");
$('.ui-dialog :button, .ui-dialog a').blur();
});
</script>
誰かがこれを行う方法を教えてもらえますか? ありがとう。