2010-01-23 81 views
1

我想實現的URL,如:特定產品的服務HTML或ASPX文件在ASP.NET MVC

www.domain.com/Business/Manufacturing/Category/Product1 

這將給細節(如規格)。 由於這些類別中的每個類別&產品的列表是有限的,我認爲這是不值得使用的數據庫產品。

所以我想用HTML或ASPX文件來實現它。此外,我想要的網址是沒有文件extention(即網址不應有html的或擴展名爲.aspx)

如何我ASP.NET MVC實現它?我應該在其中使用HTML/ASPX文件的嵌套文件夾結構,以便它對應於URL?那麼如何避免URL中的擴展? 我很困惑與這些想法

+0

我沒有得到投票,似乎是一個很好的問題給我... – RageZ 2010-01-23 13:00:10

回答

2

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,而不用改變任何其他代碼或移動任何文件。

1

如果你還沒有準備好深入ASP.Net MVC,你仍然可以通過使用URL重寫爲ASP.Net獲得漂亮的URL。如果你已經熟悉ASP.Net WebForms,那會更簡單。 URL重寫MSDN文章應該是一個良好的開端:

http://msdn.microsoft.com/en-us/library/ms972974.aspx

我會真的相信你不會最終不得不決定不使用數據庫之前,更多的產品。MVC和WebForms都可以讓你製作一個可以動態展示產品的頁面,並且仍然有一個漂亮的URL--另外你可以節省自己的開發時間。需要思考的東西。