2009-07-27 36 views
3

說我有這樣的路線:ASP.Net MVC:形成GET方法上提交丟失參數

"{controller}/{action}/{roomId}/{name}" 

而且像這樣的形式操作(是的它看起來像這樣的行動在html即交服務器處理):

Room/Index/6/SomeThing?pageNumber=1&amountToShow=5 

和形式是簡單的:

<form action = "Room/Index/6/SomeThing?pageNumber=1&amountToShow=5" method="get"> 
    <button type="submit">SomeButton</button> 
</form> 

按鈕被點擊現在,當,請求S omehow似乎失去了一半pageNumber = 1 & amountToShow = 5部分。實際上,當我查看ActionExecutingContext.ActionParameters列表時,參數在那裏(pageNumber和amountToShow),但沒有值。我甚至看過了請求,並且沒有請求參數,儘管它知道URL是「房/索引/ 6 /什麼?PAGENUMBER = 1 & amountToShow = 5」。

我想,也許這曾與按鈕的形式做的,也許這是不可能的,但後來我調整到路線:

"{controller}/{action}/{roomId}/{name}/{pageNumber}/{amountToShow}" 

和它的作品,除了網址是超級格式化:

Room/Index/6/SomeThing/1/5 

這是預料之中的,因爲這次顯然是做這件事。有任何想法嗎?

UPDATE

如下建議由阿德里安Godong,我嘗試使用隱藏的輸入和它的作品,但這仍然引起更多的問題。爲什麼更詳細的路由能夠處理沒有隱藏值的請求參數,但是縮短的路由卻不能。

回答

3

你有沒有嘗試過的查詢字符串參數遷入隱藏輸入字段?

因此,而不是你的型塊,試試這個:

<form action = "Room/Index/6/SomeThing" method="get"> 
    <input type="hidden" name="pageNumber" value="1" /> 
    <input type="hidden" name="amountToShow" value = "5" /> 
    <button type="submit">SomeButton</button> 
</form> 
+0

我可以給一個嘗試,但仍然不知道爲什麼這個動作失敗了這個樣子。 – 2009-07-27 19:09:48

2

我認爲它得到被改寫的原因,當你通過得到它追加提交表單「formvalue =值& otherfield = annothervalue ...?」到請求字符串。這可能會導致您的'?stuff = value'被IIS/ASP忽略。