Asp.net MVC使用路由庫從微軟。因此,在不考慮文件夾結構或文件擴展名的情況下獲取這種結構非常容易。使用asp.new mvc,您不會在特定文件中指定請求。而是指向處理請求的操作,並使用這些參數來確定要呈現併發送給客戶端的內容。要實現你的榜樣,你可以做這樣的事情:
_routes.MapRoute(
"Product",
"Business/Manufacturing/Category/Product{id}",
new {controller = "Product", action = "Details", id = ""}
);
這條路線將匹配您所描述的URL,並執行一個名爲「詳細信息」名爲「ProductController的」(如果你使用的是默認設置),控制器上的作用。這一行動可以是這個樣子:
public ActionResult Details(int id) {
return View(string.Format("Product{0}", id);
}
這一行動將然後渲染視圖取決於什麼ID產品有(以下簡稱「產品」後,在您的示例URL的末尾號)。如果您使用默認設置,則此視圖應位於Views/Product文件夾中。然後,如果您在該文件夾中添加了一個名爲「Product1.aspx」的視圖,那麼當您在示例中訪問該URL時將會呈現該視圖。
所有的辛苦也很可能那樣做,我會強烈建議反對。你將不得不做很多重複的工作,即使你只有幾個產品,並利用部分景色的一個好辦法,以儘量減少重複的用戶界面。我建議您爲產品使用數據庫或其他類型的存儲,並使用單個視圖作爲模板來呈現產品。你可以使用相同的路線。你只需編輯一下你的動作。它可以是這個樣子:
public ActionResult Details(int id) {
var product = //get product by id from database or something else
return View(product);
}
這樣你可以強烈地輸入您的視圖的產品對象,你不會有那麼多重複。
路由引擎非常靈活,當你玩弄它並學習它如何工作時,你將能夠以任何你想要的方式改變你的url,而不用改變任何其他代碼或移動任何文件。
我沒有得到投票,似乎是一個很好的問題給我... – RageZ 2010-01-23 13:00:10