Hogyan írjunk egy egyéni MVC ActionFilterAttribute amely átirányítja a Facebook alkalmazás

szavazat
2

Kell egy attribútum, amely kezeli engedélyt én vezérlők. Ez egy Facebook alkalmazás, és van néhány akadály körül a problémát.

Amit igazán szükség van a egyenértékű server.transfer, de természetesen ez nem megoldás az ASP.NET MVC. A átirányítás nem fog működni, mert az út Facebook fogyaszt az alkalmazást.

Van egy mód arra, újra útvonalon belül ActionFilterAttribute?

public class FbAuthorize : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (!Service.SignedIn())
            RouteToAction(Account, Index); // Fictional method (I wish it existed)
    }
}
A kérdést 03/04/2009 14:22
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
1

Lehet csak teszik a sam nézet ugyanazokat az adatokat, hogy a kívánt műveletet útvonalat tette volna. Kivonat a kódot generál az adatokat vissza a modell és mindkét módszer jönne onnan, így csökkenti a párhuzamos. Ez nem adja meg ugyanazt az URL, de megadja a kívánt nézetet.

Válaszolt 03/04/2009 14:30
a forrás felhasználó

szavazat
3

Ha a facebook fejlesztő eszköztár segítségével végre a basepagehelper a LoadFBMLPage módszer alkalmazása egy ActionFiler a OnActionExecuting módszer. (egyébként akkor meg kell kibocsátani az fb: átirányítási címkét magad). Itt egy rövid writeup: http://onishimura.com/2009/04/13/facebook-and-aspnet-mvc/

Válaszolt 13/04/2009 08:06
a forrás felhasználó

szavazat
1

Itt a „Server.Transfer ()” vagy a fajta:

public static class ServerHelper {

  public static void Transfer(ActionExecutingContext filterContext, string url) {

    // Rewrite path
    HttpContext.Current.RewritePath(GetPath(filterContext, url), false);

    IHttpHandler httpHandler = new System.Web.Mvc.MvcHttpHandler();

    // Process request
    httpHandler.ProcessRequest(HttpContext.Current);
    filterContext.HttpContext.Response.End();
  }

  private static string GetPath(ActionExecutingContext filterContext, string url) {
      HttpRequestBase request = filterContext.HttpContext.Request;

      UriBuilder uriBuilder = new UriBuilder(request.Url.Scheme, request.Url.Host, request.Url.Port, request.ApplicationPath);

      uriBuilder.Path += url;

      return filterContext.HttpContext.Server.UrlDecode(uriBuilder.Uri.PathAndQuery);
  }
}

Most, a szűrő, csak hívja:

ServerHelper.Transfer(filterContext, "Account/Index");

Egészségére

Válaszolt 24/07/2009 15:56
a forrás felhasználó

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