2012-03-02 40 views
4

我有以下途徑:asp.net的MVC URL操作不理舊參數值

context.MapRoute 
(
    "PersonArea_tripleInt", 
    "PersonArea/{controller}/{action}/{int1}/{int2}/{int3}", 
    new { controller = "Person", action = "Index" }, new { int1 = new IntConstraint(), int2 = new IntConstraint(), int3 = new IntConstraint() } 
); 

我用在我的控制器是這樣的:

RoleListUrl = Url.Action("RoleList", "Person", new { Area = "PersonArea" }), 

爲了產生這種URL:「/ PersonArea/Person/RoleList「

在我看來,我有下降,將填充int1,int2和int3值。我在客戶端使用JavaScript來填寫URL的其餘部分:

「/ PersonArea /人/的RoleList/12 /76分之43」

這是偉大的工作是第一次,但是當頁面重新加載時,舊值(12,43,76)會在我的控制器中創建基礎URL時重新使用。

「/ PersonArea /人/的RoleList/12/43 /88分之76/78分之154」

如何獲得Url.Action:所以,當用戶使用以下URL獲取客戶端創建下拉菜單交互在服務器的後續文章中忽略舊值(12,43,76),以便客戶端可以構建正確的url?相反,我正在對控制器中的基礎URL(「/ PersonArea/Person/RoleList /」)進行硬編碼。

我只想讓控制器每次生成「/ PersonArea/Person/RoleList」,並讓客戶端填寫其餘的參數。

我錯過了什麼?謝謝。

回答

1

嘗試明確清除路由值:

RoleListUrl = Url.Action("RoleList", "Person", new { Area = "PersonArea", int1 = "", int2 = "", int3 = "" }), 
+1

感謝,但沒有明確出來。 – 2012-03-02 22:13:47

+0

奇怪。那麼在控制器中,第一次生成沒有3個整數的url,第二次用最後一次發送的值生成呢?你直接在該行上放置一個斷點來驗證? – Lester 2012-03-02 22:18:11

+0

謝謝,它適用於我。 – 2013-06-02 08:12:18