Asp.net mvc 是否可以使用route属性仅接受route参数的特定值?
下面的代码完成了我想做的事情。如果字符串参数Asp.net mvc 是否可以使用route属性仅接受route参数的特定值?,asp.net-mvc,asp.net-mvc-5,url-routing,asp.net-mvc-routing,attributerouting,Asp.net Mvc,Asp.net Mvc 5,Url Routing,Asp.net Mvc Routing,Attributerouting,下面的代码完成了我想做的事情。如果字符串参数forsalerent有任何值,但ForSale或ForRent除外,则操作方法返回HttpNotFoundResult。我的问题是,仅使用路由属性是否可行 [Route("post/{ForSaleOrRent}")] public ActionResult PostProperty(string ForSaleOrRent) { bool IsValidUrl = ForSaleOrRent.ToUpper() == "FORSALE" |
forsalerent
有任何值,但ForSale
或ForRent
除外,则操作方法返回HttpNotFoundResult
。我的问题是,仅使用路由属性是否可行
[Route("post/{ForSaleOrRent}")]
public ActionResult PostProperty(string ForSaleOrRent)
{
bool IsValidUrl = ForSaleOrRent.ToUpper() == "FORSALE" ||
ForSaleOrRent.ToUpper() == "FORRENT";
if (!IsValidUrl)
{
return new HttpNotFoundResult();
}
return View(ForSaleOrRent);
}
只需使用内联约束
[Route("post/{ForSaleOrRent:regex(^forrent$|^forsale$)}")]
public ActionResult PostProperty(string ForSaleOrRent)
{
return View(ForSaleOrRent);
}
参考资料:
enum
呢?@haim770您是个天才。@AmitHasan,通常在MVC中,模型验证是模型切割过程的一部分。因此,如果要为enum
类型编写自定义模型绑定器,则可以将其标记为对任何与FORSALE
或FORRENT
不匹配的值无效(例如)。如果你觉得这是一种方法,我会用代码写一个答案。这会给我ForSaleOrRent的值吗?我刚刚测试了它,它显示了错误-“DefaultInlineConstraintResolver类型的内联约束解析程序无法解析以下内联约束:'values(forrent | forsale')。我对此不太确定。它在帖子中说“属性路由以前提供了自定义的内联约束,就像这样”,但没有给出任何指示它们是如何改变的。我找到了上面的第二个链接,并更正了约束。或者,您可以使用第二个链接中的值约束
(请参见“自定义路线约束”部分)。如何同时忽略大小写?