是否可以仅使用路由属性接受路由参数的特定值?

时间:2016-06-01 18:59:02

标签: asp.net-mvc asp.net-mvc-5 url-routing asp.net-mvc-routing attributerouting

以下代码执行我想要做的事情。如果字符串参数ForSaleOrRent具有任何值,但ForSaleForRent,则操作方法返回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);
}

1 个答案:

答案 0 :(得分:3)

只需使用内联约束

[Route("post/{ForSaleOrRent:regex(^forrent$|^forsale$)}")]
public ActionResult PostProperty(string ForSaleOrRent)
{
    return View(ForSaleOrRent);
}

参考文献: