2011-01-12 110 views
3

我學習.NET和構建使用URL路由的站點。ASP.NET 4路由隱藏ID參數

我有工作,雖然試圖從我有傳遞一個ID參數(如數據庫)獲取數據時:

服務/ {ID}/{類別}/{子類}

組合/ {ID}/{類別}/{TITLE}

博客/ {日期}/{ID}/{TITLE}

我所看到的網站做同樣的事情,但他們似乎並沒有被傳遞一個ID參數,他們如何實現這個目標?

如果他們想要根據上述鏈接查看特定服務的信息,那麼您只需運行一個SQL查詢來查找子類別名稱上的匹配項,或者查找博客標題和日期匹配的博客文章?

它只是似乎有點怪我,如果你讓人們將博客文章等總有不止一個匹配的可能性較小。

感謝您的幫助,

J.

回答

2

您可以隨時檢查您的博客文章的網址的名稱,你鬆開前。如果存在,只需添加一個「_1」或其他東西。另外他們大多包括日期。

0

當你說出他的網站可能使用了別的東西作爲唯一的參數來識別物體進行查詢。也許他們正在使用在後臺登錄時設置的用戶名或ID,以限制sql查詢僅適用於該用戶的項目。

0

通常你會保持一個稱號 - > ID關係......這樣一個博客被保存,更新,每一次或刪除在title_id上​​表中的相應記錄都將保留,以便查找可以只用一個SELECT查詢來完成。

1

在ASP.NET路由,IDS是最經常在傳遞的url,當您使用HTTPGET協議。這通常發生在你有鏈接時:

<a href="tvShows/comedy/35">Watch The Big Bang Theory</a> 

有你想要避免的id。

也可以使用HttpPost協議和在標題表單字段值傳遞(這是不可見的臨時用戶)。

<form id="whatToDo"> 
    <input type="hidden" id="Category' value="tvShows"> 
    <input type="hidden" id="Genre' value="comedy"> 
    <input type="hidden" id="ShowId' value="35"> 
    <p> 
     <input type="submit" value="Watch The Big Bang Theory" /> 
    </p> 
</form> 

因此,當用戶點擊該按鈕,您的接收器將有三個表單域,分類,流派和ShowId與內含價值,他們將不會出現在URL中。

如果你不喜歡按鈕,但需要一個鏈接,你可以隨時使用JavaScript/jQuery的提交表單。

+0

我不使用MVC所以不知道是否有差別。之前有人提到了這個給我,但是這必須要做一個網站上的每一個環節,因爲每個頁面幾乎是從一個數據庫,以便它可以很容易地鏈接100的。 – JBoom 2011-01-12 16:53:09