Обработка событий в Asp.net MVC - PullRequest
1 голос
/ 02 ноября 2009

Шесть месяцев назад я написал библиотеку OpenID. Он пытается аутентифицироваться с некоторым открытым идентификатором, и, если это проверено провайдером, он вызывает событие OpenIdValidationSuccess. Я использовал некоторые обработчики событий для обработки этих событий со страницы.

OpenMedia.Auth oAuth = new oAuth();

На моей странице нагрузка

protected void Page_Load(object sender, EventArgs e) 

{

if (!Page.IsPostBack) 

{

// Register event handlers. 

oAuth.OpenIdValidationSuccess += new EventHandler(web_Success); 

oAuth.OpenIdValidationFailure += new EventHandler(web_Failure); 



// Start handling responses. 

oAuth.StartHandleResponse();

}

}

Так что я новичок в MVC. Я хочу использовать эту библиотеку кода в моем новом приложении MVC. Но что было бы лучшей практикой?

Ответы [ 2 ]

2 голосов
/ 02 ноября 2009

В ASP.NET MVC Framework нет серверных элементов управления и событий на стороне сервера. Вам нужно найти другое место для звонков в вашу библиотеку. Чтобы дать вам дальнейшие рекомендации, вам нужно объяснить, что делает ваша библиотека и как она интегрируется с остальной частью приложения.

0 голосов
/ 02 ноября 2009

Я думаю, вам следует заменить атрибут авторизации mvc на ваш собственный авторизованный атрибут, например:

public class CustomAuthorizeAttribute : AuthorizeAttribute
    {
        public override void OnAuthorization(AuthorizationContext filterContext)
    {
//        base.OnAuthorization(filterContext);
//do your own authorize here


        if (filterContext.Result is HttpUnauthorizedResult && filterContext.HttpContext.Request.IsAjaxRequest())
        {
//do some more logic here
           // filterContext.HttpContext.Response.StatusCode = 200;

            //filterContext.Result = new ContentResult() { Content = "404" };
        }
    }

И затем при каждом действии в вашем контроллере вам просто нужно добавить атрибут CustomAuthorizeAttribute вместо пользовательского, который MVC предоставил

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...