我有一个页面,用户可以针对某个产品“提出问题” .
路线是:
context.MapRoute(
"Q&A - Ask - by Product",
"{someProductUri}/questions/ask",
new { controller = "Questions", action = "Ask" }
);
哪个匹配:
/ car / questions / ask / phone / questions / ask
这是行动:
public class QuestionsController : Controller
{
public ViewResult Ask(string someProductUri)
{
// ...
}
}
现在,问题是,我还需要允许用户在页面本身上选择产品,例如在URI中没有预先选择的产品 .
因为这个控制器在 area 中,所以"default URL"将是这样的:
/ myarea / questions / ask
所以发生了什么,当我开始行动时,“someProductUri”被设置为“myarea”,引起各种各样的悲伤 .
我想为两组URL重复使用相同的操作/视图,但我不希望路由值在默认URL时设置为“myarea” .
希望有意义 - 任何想法?
我需要一个单独的路线吗?我可以添加一个路由约束,以便“someProductUri”不能是“myarea”,这样它与路由不匹配并回退到默认值吗?
2 回答
我已经有太多的路线,所以我不想为这个边缘情况添加另一个 .
所以我最终使用路线约束:
非常简单,通用 - 所以我可以在遇到这种类型的边缘情况时重复使用它 .
您需要为该区域添加单独的路线: