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

Is it possible to only accept specific value of a route parameter using route attribute?

下面的代码完成了我想做的事情。如果字符串参数 ForSaleOrRent 具有除 ForSaleForRent 之外的任何值,则操作方法 returns 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);
}

只需使用内联约束

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

参考文献: