2013-05-01 5 views
1

У меня есть следующий код, который отлично работает с URL из/Проекты/{USERID}/{Id}MVC авторизовать атрибут проверки значения JSON

но если я выкладываю значения до страницы с/Проекты/и значения JSON из

{"userId":1234,"Id":145} 

не подберут значения JSON, как UserId и Id являются недействительными.

код выглядит следующим образом

protected override bool AuthorizeCore(HttpContextBase httpContext) 
{ 
    int documentIdfound, userIdFound; 
    int? documentId = null; 
    var documentIdRoute = httpContext.Request.RequestContext.RouteData.Values["Id"]; 

    if (int.TryParse((string)documentIdRoute, out documentIdfound)) 
     documentId = documentIdfound; 

    //if we havent found the ProjectId in the RouteData check the querystring. Just in case 
    if (documentId == null) 
    { 
     documentIdRoute = httpContext.Request.QueryString["Id"]; 
     if (int.TryParse((string)documentIdRoute, out documentIdfound)) 
      documentId = documentIdfound; 
    } 

    var userIdRoute = httpContext.Request.RequestContext.RouteData.Values["userId"]; 

    int.TryParse((string)userIdRoute, out userIdFound); 

    var gi = GetCurrentUser(); 

    try 
    { 
     var userFound = gi.UserProfiles.Where(x => x.UserId == userIdFound).FirstOrDefault(); 
     if (userFound != null) 
     { 
      return gi.IsUserValid(userFound.UserId, documentId.Value); 
     } 
     else 
      return false; 
    } 
    catch (Exception ex) 
    { 
     AddErrorToDB(ex); 
     return false; 
    } 
} 
+0

Это должна быть проблема с привязкой модели Binder json к переменным Вам нужно будет добавить связующее устройство для сопоставления Json Model –

ответ

0

Попробуйте отправить значения параметров в виде строки:

{'userId':'1234','Id':'145'}

Это позволит решить эту проблему.

Смежные вопросы