【发布时间】:2019-10-02 20:08:12
【问题描述】:
我有一个 ASP.NET 控制器,其中每个方法都有一个共享参数。通过属性路由,我可以在控制器的路由中添加这个参数。
但是,我仍然需要在每个方法中添加该参数以及验证属性。有没有办法让我在一个地方进行验证或避免将其传递给每个方法?
这是当前的工作代码:
[ApiController]
[Route("[controller]/{name}")]
public class ExampleController : ControllerBase
{
[HttpGet]
public string Sample([StringLength(10)][FromRoute]string name)
{
}
[HttpGet]
[Route("defaults")]
public string GetDefaults([StringLength(10)][FromRoute]string name)
{
}
[HttpGet]
[Route("objects/{id}")]
public string Sample([StringLength(10)][FromRoute]string name, [FromRoute]string id)
{
}
}
有可能得到接近这个的东西吗? (我知道控制器上的验证参数无效,但我只想应用一次)
[ApiController]
[StringLength(10)]
[Route("[controller]/{name}")]
public class ExampleController : ControllerBase
{
[HttpGet]
public string Sample()
{
}
[HttpGet]
[Route("defaults")]
public string GetDefaults()
{
}
[HttpGet]
[Route("objects/{id}")]
public string Sample([FromRoute]string id)
{
}
}
【问题讨论】:
-
所以我认为模型绑定只适用于POST请求体和GET请求中的查询参数。您可以将模型绑定到 GET 请求中的路由参数吗?我的路线大多看起来像 /basePath/{category}/resourceType/{uid},没有查询字符串。
标签: c# asp.net-mvc asp.net-core asp.net-web-api