2010-05-28 119 views
2

我真的不知道在哪裏尋找錯誤...情況:我有一個ASPX視圖,其中包含一個窗體和一些輸入,當我點擊提交按鈕一切都POST'ed到我的ASP.NET MVC行動之一。ASP.NET MVC 2 - 查看數據後POST空

當我在那裏設置斷點時,它被正確命中。當我使用FireBug來查看發送到該操作的內容時,我正確地看到data1 = abc & data2 = something & data3 = 1234。

然而,沒有什麼是在我的行動方法到達。 ViewData是空的,沒有ViewData [「data1」]或任何可以顯示數據到達的東西。

這怎麼可能?我在哪裏可以開始尋找錯誤?

+0

WRT數據1 = ABC&數據2 = ...什麼呢ŧ他的方法簽名爲你的動作方法看起來像? – 2010-05-28 19:09:04

+0

沒有參數。 ViewData [「data1」]應該能夠訪問該值。但它是空的,即使FireBug顯示該值已提交。 – Alex 2010-05-28 19:10:35

+0

你期待在ViewData中找到什麼回發?它用於控制器向視圖發送數據,反之亦然。查看'Request [「data1」]',或者在控制器操作的參數中更好。 – 2010-05-28 19:10:39

回答

8

從控制器到視圖時,ViewData是相關的。它不會回發。

你需要你的動作方法看起來像

public ActionResult DoSomething(string data1, string data2, int data3) { ... 

然後(模型參數?)結合應該照顧你的東西

+0

...的確如此:-) – 2010-05-28 19:15:54

1

嘗試修改你的行動接受的FormCollection:

public ActionResult DoSomething(FormCollection fc) 
{ 
    System.Diagnostics.Debug.Writeline(fc["data1"]); 
} 
0

如果你想看到什麼是張貼到您的視圖,接受的FormCollection作爲參數,或直接綁定你的表單元素的模型。像這樣:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult PostToThisView(FormCollection formItems) 
{ 
    var data1 = formItems["data1"]; 
    return View(); 
} 

另外,see this question

0

試試這個:

Request["data1"] 

Request.Form["data1"] 

[HttpPost] 
public ActionResult YourPostAction(object data1) 

[HttpPost] 
public ActionResult YourPostAction(ACLassThatHasData1Prop viewmodel) 
//your view doesn't has to be strongly typed to the type of the parameter in this case 
+0

關於最後一個示例,用於該參數的模型不必與強制類型爲請求來源的視圖的模型相同。模型聯編程序將簡單地獲取存儲在表單集合中的值(或者如果請求是GET,則返回查詢字符串),並嘗試使用它們填充指定爲參數的任何類型的對象。 – 2010-05-28 20:36:18

+0

@Dr。 Wily的學徒,thnx告訴我這一點 – Omu 2010-05-29 08:19:07