2010-11-08 178 views
1

有趣的問題。提交按鈕不提交

在項目範圍更改中,我將一個應用程序分爲兩個應用程序。我創建了一個新項目,而不是試圖將現有的應用程序分解爲兩個,並重用了以前編寫的大部分代碼。我陷入了讓我把頭髮拉出來的最後一個錯誤。

我有一個項目列表,每行都有一個複選框,以允許用戶一次處理多行。我有一些jQuery驗證邏輯,以確保在下拉列表中選擇了一個選項,並且至少選擇了一行。這有效,但是當我點擊提交按鈕時似乎沒有發生。我甚至在函數的第一行代碼中設置了一個斷點,並且它從不被觸發。代碼與將動作從Display更改爲Index的例外情況相同。有什麼想法嗎?

代碼如下:

<% using (Html.BeginForm("Index", "Timesheet", FormMethod.Post, new { Id = "form1" })) 
    { %> 
<%= Html.DropDownList("DropDownAction", new SelectList(Model.Actions, "Value", "Text"), "(Select)", new { Class = "required" })%> 
<input type="submit" value="Submit" /> 
.... 
<% } %> 

TimesheetController.cs

// 
    // GET: /Timesheet/ 
    [Authorize] 
    public ActionResult Index() 
    { 
     .... 
    } 

    // 
    // POST: /Timesheet/ 
    [HttpPost, Authorize] 
    public ActionResult Index(int[] CbSelect, string DropDownAction, SupervisorCredentials user) 
    { 
     foreach (int id in CbSelect) 
     { 
      ... 

     } 

     return RedirectToAction("Index"); 
    } 

生成的HTML:

<form Id="form1" action="/Timesheet" method="post"><select Class="required" id="DropDownAction" name="DropDownAction"><option value="">(Select)</option> 
<option value=" ">Approve</option> 
<option value="P">Paper Signature</option> 
<option value="A">Absent Employee</option> 
</select> 
<input type="submit" value="Submit" /> 

更新:我刪除了jQuery,現在我得到一個空例外。我發佈的值是DropDownAction=P&CbSelect%5B%5D=274680&CbSelect%5B%5D=275744。爲什麼不能public ActionResult Index(int[] CbSelect, string DropDownAction)工作?我在的DropDownActionnull中得到正確的值。

回答

3

不知道爲什麼,但顯然在我的jQuery驗證部分,我有debug: true。看起來好像阻止了實際提交表單。我不知道那是如何實現的。我沒有添加它。儘管表格現在可以工作了。

+0

您能否詳細說明您如何解決這個問題? – Shimmy 2013-04-29 13:02:11

+0

這已經超過2年前了...除了我在那裏之外不再有了。 – 2013-04-29 14:42:13

+0

看看[這個](http://stackoverflow.com/questions/16193615/asp-net-mvc-form-doesnt-submit-to-the-right-action)的問題? – Shimmy 2013-04-29 15:35:34

0

它可能是什麼實際上在表單中發佈,與MVC期望給出Action的方法簽名不符。如果它甚至沒有發佈(即永遠不會訪問服務器,可以使用螢火蟲或類似軟件進行驗證),那麼您的視圖的HTML輸出是什麼樣的?

+0

如何驗證發送的內容?我添加了生成的HTML。就像我說的,這在我從之前的應用程序中複製過來。 – 2010-11-08 22:09:36

2

調試這些類型的情況可能非常令人沮喪。讓自己得到一個像http://www.fiddler2.com/fiddler/version.asp這樣的工具來啓動它,它會監控所有的網絡請求,這樣你就可以很容易地看到迴應是什麼,看看你的表單是否真正提交。

+0

好吧,沒有提交。我將開始刪除jQuery的東西,直到它工作。 – 2010-11-09 18:36:54

0

您是否更改了默認路由?

另外,您發佈的html沒有關閉</form>標籤。它在嗎?

+0

沒有改變路由,是的結局在那裏。我今天晚些時候會檢查Eric的建議。 – 2010-11-09 14:13:25