我有一個頁面,用戶可以針對產品「提出問題」。ASP.NET MVC 3 - 區域路由的邊緣情況
的路線是:
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中預先選擇產品。
因爲這個控制器是一個區域,這種 「默認網址」 將是這樣的:
/myarea /問題/問
所以發生了什麼,當我得到到行動,「someProductUri」被設置爲「myarea」,造成各種悲傷。
我想爲這兩組URL重複使用相同的動作/視圖,但我不希望將路由值設置爲默認URL時的「myarea」。
希望有道理 - 任何想法?
我需要一條單獨的路線嗎?我是否可以添加路線約束,以便「someProductUri」不能成爲「myarea」,以便它與路線不匹配並回落到默認值?
是的,我可以這樣做,但我希望這可以由默認區域路線處理。 – RPM1984
您可以添加一個約束來阻止匹配'myarea'的路線。 – SLaks
究竟是什麼即時嘗試現在... :)一個「notEqualtoareaNameconstraint」。 :) – RPM1984