【发布时间】:2016-10-01 07:09:57
【问题描述】:
下面的代码做了我想做的事。如果字符串参数ForSaleOrRent 具有除ForSale 或ForRent 之外的任何值,则操作方法返回HttpNotFoundResult。我的问题是仅使用 Route 属性是否可行?
[Route("post/{ForSaleOrRent}")]
public ActionResult PostProperty(string ForSaleOrRent)
{
bool IsValidUrl = ForSaleOrRent.ToUpper() == "FORSALE" ||
ForSaleOrRent.ToUpper() == "FORRENT";
if (!IsValidUrl)
{
return new HttpNotFoundResult();
}
return View(ForSaleOrRent);
}
【问题讨论】:
-
不会使用 2 个不同的函数映射特定地址来解决您的问题吗?
-
@Phil1970 上面的代码也可以,但我想知道这是否可以使用 route 属性来完成。
-
为什么不首先使用
enum? -
@haim770 你是个天才。
-
@AmitHasan,通常在 MVC 中,模型验证是作为模型处理过程的一部分进行的。因此,如果您要为您的
enum类型编写自定义模型绑定器,您将能够将其标记为对于任何与FORSALE或FORRENT不匹配的值(例如)无效。如果你觉得这是要走的路,我会用代码写一个答案。
标签: asp.net-mvc asp.net-mvc-5 url-routing asp.net-mvc-routing attributerouting