【发布时间】:2011-07-21 01:50:34
【问题描述】:
我有一个页面,用户可以在其中针对产品“提问”。
路线是:
context.MapRoute(
"Q&A - Ask - by Product",
"{someProductUri}/questions/ask",
new { controller = "Questions", action = "Ask" }
);
哪些匹配:
/汽车/问题/问
/电话/问题/询问
下面是动作:
public class QuestionsController : Controller
{
public ViewResult Ask(string someProductUri)
{
// ...
}
}
现在,问题是,我还需要允许用户在页面本身上选择产品,例如在 URI 中没有预先选择产品。
因为这个控制器在一个区域,这个“默认URL”会是这样的:
/myarea/问题/提问
所以发生的事情是,当我开始行动时,“someProductUri”被设置为“myarea”,导致各种悲伤。
我想对两组 URL 重复使用相同的操作/视图,但是当它是默认 URL 时,我不希望将路由值设置为“myarea”。
希望这是有道理的 - 有什么想法吗?
我需要单独的路线吗?我可以添加一个路由约束,使“someProductUri”不能是“myarea”,这样它就不能匹配路由并回退到默认值?
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing asp.net-mvc-areas