2011-12-13 33 views
0

我正在使用ASP.NET MVC3,我想知道是否有任何方法創建一個列表框,其中包含我希望模型具有的值。MVC3列表框內容到模型值

使用@ Html.ListBoxFor將僅在提交表單時將所選項目存儲到模型中,而不是列表框中的所有項目。我計劃使用JavaScript從其他文本框添加項目。

謝謝

回答

2

你不清楚,但你是否想要返回值?如果是這樣,那麼它們必須被選擇(即活動)形式值才能POST。如果您使用JavaScript將選項添加到列表框(HTML選擇>然後這些不會發布。您需要啓用多選選項,然後標記每個要提交的選定值。

要返回值他們需要POST以某種方式

1

不,這與MVC3無關。這是HTTP模型的一個限制。當表單發佈時,瀏覽器只發布選定的值。選擇列表中的其他元素。

MVC必須的瀏覽器工作方式的框架內工作,這不能改變。

0

是的,你可以做到這一點。你需要一些東西來完成這項工作,但這可能會令人不安。

鑑於:

//generate list box with 
<select id="NAMEOFLISTBOX" name="NAMEOFLISTBOX" multiple="multiple"> 

好了,這是大多數人錯過的部分。控制器只會收集選定的項目,如果他們實際上被指定選擇。因此,你的提交按鈕是你需要包含一些JavaScript。

<input type="submit" value="DO WORK" onclick="selectLISTBOXITEMS()" /> 

腳本:

function selectLISTBOXITEMS(){ 
    var curList = document.getElementById("NAMEOFLISTBOX"); 
    for (var i = 0; i < curList.length; i++) { 
     curList.options[i].selected = true; 
    } 
} 

在控制器:

[HttpPost] 
public ActionResult controllerName(List<string> NAMEOFLISTBOX) 
{ 
    foreach(string s in NAMEOFLISTBOX) 
    { 
     //do work 
    } 
    return RedirectToAction("controllerGet"); 
} 

不是不可能的,但我第一次做這個花了一段時間來弄清楚爲什麼被送到什麼。

+0

嗯,這是一種方法,但它是極端的黑客..它只是簡單地設計你的控制器來獲取數據庫中的值,而不是如果你需要他們在回發中更好。如果我以真實代碼看到它,這將屬於讓我變得w category的範疇。 – 2011-12-13 23:06:46