0

これは私のコントローラークラスです

[HttpGet]
    public ActionResult ContactUs()
    {
        if (Request.IsAjaxRequest())
        {
            return PartialView("_ContactUs");
        }

        return View();
    }

私の問題 return PartialView("_ContactUs"); MVC4 で直接実行されていない return View(); 実行されています

4

1 に答える 1

1

Ajaxリクエストと非Ajaxリクエストを区別するには、アクションメソッドセレクターを使用する必要があります。したがって、ActionMethodSelectorAttributeを実装し、アクションメソッドをその属性で装飾します(true)。以下のサンプルコードを参照してください。

[HttpGet]
[MyAjax(true)]
public ActionResult ContactUs()
{
    if (Request.IsAjaxRequest())
    {
        return PartialView("_ContactUs");
    }

    return View();
}

//.. 

public class MyAjaxAttribute : ActionMethodSelectorAttribute
    {
        private readonly bool _ajax;
        public AjaxAttribute(bool ajax)
        {
            _ajax = ajax;
        }

        // Determines whether the action method selection is valid for the specified controller context
        public override bool IsValidForRequest(
                               ControllerContext controllerContext,
                               MethodInfo methodInfo)
        {
            return _ajax == controllerContext.HttpContext.Request.IsAjaxRequest();
        }
    }
于 2012-10-28T16:18:32.857 に答える