Jak se zapojit společný kodex ze základního regulátoru v ASP.NET MVC

hlasů
7

Moje aplikace ASP.NET MVC je malá součástí většího ColdFusion aplikace, která bude brzy nahrazen úplně. Já absolvování některé parametry z ColdFusion části prostřednictvím cookies a je třeba zkontrolovat tyto informace, než jsem běžet každou akci. V případě, že v případě, že chybí informace potřebuji k přesměrování na nadřazeném webu. Jaký je nejlepší místo pro tuto funkci, a jak to nazvat jednotně?

V současné době jsem implementoval základní ovladač a v každém akčním způsobem volám metodu ze základní řídicí jednotky a na základě přiznání za následek buď přesměrování nebo pokračovat v akci. Tento přístup se zdá fungovat, ale Clutterových své akční metody s consern přímo nesouvisí s akcí. Jak bych mohl oddělit to, existují nějaké životní cyklus akcí pro řadič bych mohl čerpat z?

Položena 26/08/2009 v 23:32
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
6

Pokud již implementována základní řadič jen přepsat svou OnActionExecuting()metodu:

public class YourBaseController : Controller
{
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        base.OnActionExecuting(filterContext);

        if(somethingIsWrong)
        {
            filterContext.Result = new RedirectToRouteResult(
                new System.Web.Routing.RouteValueDictionary { ... });
        }
    }
}
Odpovězeno 27/08/2009 v 05:54
zdroj uživatelem

hlasů
2

Čím lepší přístup by implementovat vlastní ActionFilterAttribute a přepsat OnActionExecuting metodu pro zpracování logiky a pak už jen ozdobit své akce s atributem.

public class CheckCookieAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        // Check your cookie and handle the redirect here, otherwise, do nothing
        // You can get to your cookie through the filterContext parameter
    }
}

public class ActionController : Controller
{
    [CheckCookie]
    public ActionResult GetFoo()
    {
        return View();
    }
}

Snad to pomůže.

Odpovězeno 27/08/2009 v 00:01
zdroj uživatelem

hlasů
2

Je-li to nutné na každou akci v rámci určitého regulátoru, jedna potenciální možnost, kterou by pravděpodobně mohlo použít, je jen to v základním regulátorem ...

public class MyBaseController: Controller
{
    protected override void Initialize(RequestContext requestContext)
    {
        base.Initialize(requestContext);

        var cookie = base.Request.Cookies["coldfusioncookie"];
        //if something is wrong with cookie
            Response.Redirect("http://mycoldfusionapp");
    }
}
Odpovězeno 26/08/2009 v 23:43
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more