【问题标题】:Take parameter from request with attribute routing使用属性路由从请求中获取参数
【发布时间】:2015-11-21 22:29:12
【问题描述】:

嘿,我正在为我的项目使用属性路由,但我不知道如何从 URL 中获取参数的值。我尝试使用请求,但在任何地方都找不到。

当我进行 GET 时:http://localhost:60163/courses/courseId=1 如何将 courseId 的值取为 1?

[RoutePrefix("courses")]    
public class CoursesController : ApiController
{
    [Route("{courseId}")]  //this is the value I need in the TeacherAuthenticationAttribute Action Filter
    [TeacherAuthorizationRequiered]
    public async Task<IHttpActionResult> GetCourse(int courseId=0)
    {
       Course course = await db.Courses.FindAsync(courseId);
        if (course == null)
            return NotFound();
        return Ok(course);
    }

在 TeacherAuthorizationFilter 中,我需要 courseId 的值来验证它。

 public class TeacherAuthorizationRequieredAttribute : ActionFilterAttribute
 { 
  public override void OnActionExecuting(HttpActionContext filterContext)
      {
          if (filterContext.Request.Headers.Contains(Token))
             var courseIdValue = filterContext.Request.RequestUri.ParseQueryString()["courseId"];
      }
   }

这就是问题所在,我不知道如何使用 Request 获得价值,或者是否有其他方法可以做到这一点。非常感谢你!

【问题讨论】:

    标签: query-string attributerouting


    【解决方案1】:
    public class TeacherAuthorizationRequieredAttribute : ActionFilterAttribute
    { 
    
      private const string Token = "Token";
    
      public override void OnActionExecuting(HttpActionContext filterContext)
      {
          if (filterContext.Request.Headers.Contains(Token))
             var courseIdValue =  filterContext.Request.RequestUri.ParseQueryString()["courseId"];
    
      }
    
    }
    

    现在,您必须在请求正文中添加 令牌:“你的令牌”

    【讨论】:

      猜你喜欢
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 2013-03-04
      • 2021-04-29
      • 2016-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多