قیود مسیریابی در ASP.NET Core
نویسنده: معین تاجیک
تاریخ: ۱۳۹۷/۰۸/۱۸ ۱۹:۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
[Route("api/[controller]")]
public class ValuesController : ControllerBase
{
[HttpGet("{id:int}")]
public IActionResult Get(int id)
{
return Ok(id);
}
} [Route("api/[controller]")]
public class ValuesController : ControllerBase
{
[HttpGet("{id}")]
public IActionResult Get(int id)
{
// id is 0 here if you pass string.
return Ok(id);
}
} app.UseMvc(routes =>
{
routes.MapRoute("Values",
"api/values/{id:int}",
new { controller = "Values", action = "Get" });
}); [Route("api/[controller]")]
public class ValuesController : ControllerBase
{
[HttpGet("{name:minlength(2):maxlength(10):alpha}")]
public IActionResult Get(string name)
{
return Ok(name);
}
} app.UseMvc(routes =>
{
routes.MapRoute(
name: "Values",
template: "api/values/{name}",
defaults: new { controller = "Values", action = "Get" },
constraints: new
{
name = new CompositeRouteConstraint(new List<IRouteConstraint>
{
new AlphaRouteConstraint(),
new MinLengthRouteConstraint(2),
new MaxLengthRouteConstraint(10)
})
});
}); public class StartsWithConstraint : IRouteConstraint
{
public StartsWithConstraint(string startsWith)
{
if (string.IsNullOrWhiteSpace(startsWith))
throw new ArgumentNullException(nameof(StartsWith));
StartsWith = startsWith;
}
private string StartsWith { get; }
public bool Match(HttpContext httpContext,
IRouter route,
string parameterName,
RouteValueDictionary values,
RouteDirection routeDirection)
{
if (parameterName == null)
throw new ArgumentNullException(nameof(parameterName));
if (values == null)
throw new ArgumentNullException(nameof(values));
if (!values.TryGetValue(parameterName, out var value) || value == null)
return false;
string valueString = Convert.ToString(value, CultureInfo.InvariantCulture);
return valueString.StartsWith(StartsWith);
}
} services.Configure<RouteOptions>(opt =>
opt.ConstraintMap.Add("startsWith", typeof(StartsWithConstraint))); [Route("api/[controller]")]
public class ValuesController : ControllerBase
{
[HttpGet("{name:minlength(2):maxlength(10):alpha:startsWith(Mo)}")]
public IActionResult Get(string name)
{
return Ok(name);
}
} public class Product
{
//...
public string Title { get; set; }
public string TitleSlug { get; set; } // productAddModel.TitleSlug = SlugMethod(productAddModel.Title);
}