MVC3列表框内容到模型值

时间:2011-12-13 21:45:01

标签: asp.net-mvc-3 model listbox

我正在使用ASP.NET MVC3,我想知道是否有任何方法可以创建一个包含我希望我的模型具有的值的列表框。

使用@ Html.ListBoxFor只会在提交表单时将所选项目存储到模型中,而不是列表框中的所有项目。我计划使用javascript从另一个文本框中添加项目。

由于

3 个答案:

答案 0 :(得分:2)

你不清楚,但是你想重新发布值吗?如果是这样,则必须选择它们(即活动的)表格值以便POST。如果您使用JavaScript将选项添加到列表框(HTML选择>那么这些选项不会发布。您需要启用多选的选择,然后标记您要提交的每个值。

要获得值,他们需要以某种方式POST。

答案 1 :(得分:1)

没有。这与MVC3无关。这是HTTP模型的限制。发布表单时,浏览器仅发布所选值。它不会发布选择列表的其他元素。

MVC必须在浏览器工作方式的框架内工作,这是不可能改变的。

答案 2 :(得分: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");
}

并非不可能,但是我第一次这样做需要一段时间来弄清楚为什么没有发送。