2011-10-19 28 views
2

我有一個模型,我正在使用從我的視圖傳遞數據到我的控制器,但我有一些從文本框和下拉列表中解除綁定。我該如何將未綁定的數據從我的視圖傳遞迴使用ViewData或ViewBag ....或其他東西的控制器。謝謝!如何在mvc3中將數據從剃鬚刀視圖傳遞給控制器​​?

+0

你是什麼意思?請告訴我們你想做什麼。 – SLaks

+0

你是什麼意思'通過未綁定的數據' –

回答

9

你能舉個例子嗎?看起來好像你在混合你的術語。除了通過POST/GET以外,通常不會將數據從視圖傳遞到控制器。我會假設這就是你的意思。您可以通過具有相同名稱的參數或使用FormCollection將任何數據輸入到控制器的操作方法中。

public ActionResult SomeMethod(
         string yourUnboundTextBoxName, 
         FormCollection colleciton) { } 

您認爲它可能是這樣的:

<div> 
    <input type='text' name='yourUnboundTextBoxName' /> 
</div> 

MVC會自動採取的yourUnboundTextBoxName值,並將該值插入相同名稱的參數。或者你可以使用FormCollection並從那裏獲得價值。 FormCollection["yourUnboundTextBoxName"]

+0

你的回答讓我朝着正確的方向前進,我想要/需要做的事情。結合這個答案http://stackoverflow.com/q/2408043/114029我能夠回發隱藏的輸入值回到控制器的行動方法到一個未綁定名單。大! :-)我現在不能投你的答案,因爲我今天沒有更多的投票。我會保持Firefox標籤打開4小時以上,以便我可以投票給你... =] –

0

您無法使用ViewBag將數據從視圖傳遞到控制器。該視圖(或至少是從視圖中生成的HTML)可以使用表單將數據發回控制器,並且默認綁定器將允許您將對象作爲參數提供給控制器的方法。

如果您需要大量數據,您可以使用正確的命名規則和默認綁定來傳遞數組等等。

除此之外,您還需要我們提供其他數據。

0

您可以通過多種方法將模型發送回控制器。這只是其中之一。由於您似乎只需要一次發送幾個項目(可能是動態的),因此此方法可以控制要發回的內容,然後使用.ajax()請求執行此操作。

Asp.Net MVC Passing an object from Url.Action in View to Controller

從上面的鏈接:

 
$.ajax({ 
    url: '@Url.Action("ControllerActionResult")', 
    type: 'POST', 
    data: JSON.stringify(model), //you can serialize a form here as well OR simply put in the name value pairs of your data, ex. myTextBox='something' 
    dataType: 'json', 
    processData: false, 
    contentType: 'application/json; charset=utf-8', 
    success: OnSuccess 
}); 

注阿賈克斯文檔 jQuery .ajax()

相關問題