将列表框的值提交给控制器

时间:2014-04-05 15:27:03

标签: c# forms razor asp.net-mvc-5

好的,我正在尝试使用一个列表框,用户可以在其中添加可变数量的值,然后在集合中提交这些值。

这是我的模特:

public sealed class TestModel
{
    public IList<string> MyStrings { get; set; } 
}

这是我的控制器:

public class TestController : Controller
{
    //
    // GET: /Test/
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult SubmitTest(TestModel testModel)
    {
        return Index();
    }
}

我的观点:

@model WebApplication4.Models.TestModel

@{
    ViewBag.Title = "Test Page";
}
<br />
@using (Html.BeginForm("SubmitTest", "Test", FormMethod.Post))
{
    <input type="text" id="testTestbox" />
    <input id="testButton" type="button" value="Add" /><br />
    @Html.ListBoxFor(x => x.MyStrings, new List<SelectListItem>(), new { id = "testListbox", style = "width:100px;" })
    <input type="submit" value="Submit" />
}

@section Scripts{
    <script>
        $("#testButton").click(function () {
            var value = $("#testTestbox").val();
            $('<option value="' + value + '">' + value + '</option>').appendTo("#testListbox");
        });
    </script>
}

但是,提交时,MyStrings属性始终为空。我在某个地方犯了一个错误,可以通过一个小修改来解决,或者我想做的就是不可能?

由于

2 个答案:

答案 0 :(得分:0)

将值添加到列表框后,从列表框中选择值,然后再将其提交给控制器。

我认为您提交表单时没有从列表框中选择值...

答案 1 :(得分:0)

使用此..

$("<option value='"+ value + "' selected='selected'>" + value +"</option>").appendTo("#testListbox");

selected ='selected'将选择用户输入的选项并绑定到模型属性“MyStrings”