我正在使用ASP.NET MVC3,我想知道是否有任何方法創建一個列表框,其中包含我希望模型具有的值。MVC3列表框內容到模型值
使用@ Html.ListBoxFor將僅在提交表單時將所選項目存儲到模型中,而不是列表框中的所有項目。我計劃使用JavaScript從其他文本框添加項目。
謝謝
我正在使用ASP.NET MVC3,我想知道是否有任何方法創建一個列表框,其中包含我希望模型具有的值。MVC3列表框內容到模型值
使用@ Html.ListBoxFor將僅在提交表單時將所選項目存儲到模型中,而不是列表框中的所有項目。我計劃使用JavaScript從其他文本框添加項目。
謝謝
你不清楚,但你是否想要返回值?如果是這樣,那麼它們必須被選擇(即活動)形式值才能POST。如果您使用JavaScript將選項添加到列表框(HTML選擇>然後這些不會發布。您需要啓用多選選項,然後標記每個要提交的選定值。
要返回值他們需要POST以某種方式
不,這與MVC3無關。這是HTTP模型的一個限制。當表單發佈時,瀏覽器只發布選定的值。選擇列表中的其他元素。
MVC必須的瀏覽器工作方式的框架內工作,這不能改變。
是的,你可以做到這一點。你需要一些東西來完成這項工作,但這可能會令人不安。
鑑於:
//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");
}
不是不可能的,但我第一次做這個花了一段時間來弄清楚爲什麼被送到什麼。
嗯,這是一種方法,但它是極端的黑客..它只是簡單地設計你的控制器來獲取數據庫中的值,而不是如果你需要他們在回發中更好。如果我以真實代碼看到它,這將屬於讓我變得w category的範疇。 – 2011-12-13 23:06:46