asp.net MVC Web アプリケーション内に次の Ajax.BeginForm があります:-
@using (Ajax.BeginForm("AddZone", "DataCenter",
new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.InsertBefore,
UpdateTargetId = "zonetableBody",
LoadingElementId = "progress3",
OnSuccess = "createsuccess",
OnFailure="createfail"
}))
{
これにより、次のアクション メソッドが呼び出されます。
[HttpPost]
[ValidateAntiForgeryToken]
[CheckUserPermissions(Action = "Edit", Model = "Zone")]
public ActionResult AddZone(DataCenterDetails z)
{
次のように、アクション メソッドを実行する前に、カスタム認証アクション フィルターを実行しています。
namespace TMS.Controllers
{
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class CheckUserPermissionsAttribute : ActionFilterAttribute
{
public string Model { get; set; }
public string Action { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
int value = 0;
Repository repository = new Repository();
if (!repository.can(ADusername,Model,value))
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
var viewResult = new PartialViewResult();
viewResult.ViewName = "~/Views/Errors/_Unauthorized.cshtml";
filterContext.Result = viewResult;
私が直面している問題は、ユーザーが Edit に必要なアクセス許可を持っていない場合、 ajax.beginform ボタンをクリックすると、「/_Unauthorized.cshtml」ビューが表示されますが、同時に Onsuccess スクリプトが表示されることです。 「レコードが正常に追加されました」というメッセージが表示されます。
だから私の質問は、Onsuccess スクリプトが起動されないようにする方法_Unauthorized.cshtml
です。
ありがとう