2011-05-03 27 views
1

,我需要有一個通過了查詢字符串的附加參數的URL。ASP.NET MVC 1 Route參數問題

即。在大多數情況下,默認的「{controller} .mvc/{action}/{id}」都適用,但我需要爲幾頁添加額外的查詢字符串參數。

添加我的東西的global.asax.cs以應付呢?

我擔心的是,列表頁會像 Forms.mvc /調查

和詳細信息頁面會像 Forms.mvc /調查/ 1

但對於這兩個的我需要添加額外的查詢字符串參數(TypeId)的頁面。

我知道我可以去老同學,做「?typeid的= ...」,但似乎錯在MVC的世界。我使用MVC 1

所以我的問題是 - 如何使用路由添加額外的查詢字符串參數,以及如何沒有得到與細節畫面弄得列表屏幕添加新的參數之後。

是它像那樣簡單:

routes.MapDomains("{controller}.mvc/{action}/{typeid}/{id}", "DomainX", new[] { "Forms" }); 

的問題可能是,並非所有的表單域的頁面可以使用這個typeid的..

或者我應該MapDomains前添加routes.MapRoute捕捉使用這個typeid的兩個「部分」?

很抱歉,如果這是一個非常基本的問題 - 還是新的MVC! :)

謝謝!

回答

1

沒有錯,它會工作,如果你添加querystring參數的經典方式,但它不會是RESTFul,你將無法「生成」動作鏈接......因爲可以使用路由約束兩種方式作爲ScottGu博客有關URL路由: http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx Link can be generated from URL constraints

您可以支付本博客約Create Custom Route Constraints

+0

謝謝 - 不幸的是,約束不會幫我,雙方的參數作爲整數,但很高興知道。它在mvc 1中工作嗎?此外,不幸的是,scottgu鏈接給出了404。希望我可以使用地圖路由和Custom Route Constraints文章中的兩個參數。 – Jen 2011-05-04 07:19:24

+0

當然,你可以在路線中放兩個int(s),我可以理解爲什麼不......你可以選擇一個參數...關於鏈接,我修改了他們,他們正在工作 – 2011-05-04 07:41:41

0

你不需要做任何事情來的路線,以充分利用使用查詢字符串將數據傳遞給控制器​​的訪問。所有你需要做的就是確保查詢字符串名稱在控制器方法中被指定爲路徑匹配的變量。

所以,如果你有

"Forms.mvc/Survey/1?TypeId=1" 

一個URL可以匹配查詢字符串,因爲這路線:

public ActionResult Survey(int? id, int TypeId) {...} 
+0

謝謝,這就是我的意思是說我知道我可以去querystring參數老派,但並不認爲這是理想的世界上的MVC和漂亮的URL :) – Jen 2011-05-04 07:16:00