繁体   English   中英

Html.ListBox不选择项目

[英]Html.ListBoxFor not selecting Items

首先,我正在使用MVC 2.0。 我在使用发回控制器的Multiselect列表框进行选择时遇到麻烦。 这是我的代码:

模型

public class TestModel
{
    public MultiSelectList AvailableTestTypes { get; set; }
    public List<TestType> SelectedTestTypes { get; set; } 
}

public class TestType
{
   public long Id { get; set; }
   public string Name { get; set; }
   public bool isActive { get; set; }
}

控制者

public ActionResult Index(TestModel model)
{
    if (model == null) model = new TestModel();

    List<TestType> testList = new List<TestType>()
    {
        new TestType() { Id = 1, Name = "TESTING", isActive = true },
        new TestType() { Id = 2, Name = "TESTING2", isActive = true },
        new TestType() { Id = 3, Name = "TESTING3", isActive = true }
    };

    model.AvailableTestTypes = testList; //TODO: Fetch From Repository 
    return View(model);
}


[HttpPost]
public ActionResult PostForm(TestModel model)
{
    List<long> act = model.SelectedTestTypes != null ? model.SelectedTestTypes.Select(x => x.Id).ToList() : new List<long>();

视图

 <%= Model != null && Model.AvailableTestTypes != null ?
                                    Html.ListBoxFor(x => x.SelectedTestTypes,
                                                             new MultiSelectList(Model.AvailableTestTypes, "Id", "Name", Model.SelectedTestTypes), 
                                                             new { @id = "testListboxId", @class = "blah", @title = "title" }) : null%>

发布到控制器后,无论我选择多少,我的选定列表数均为0 ...这是怎么了?

我尝试了一些不同的解决方案,例如在ListBoxFor中选择值的Challenges,但没有任何效果:(

您的脚本与其他脚本中的示例之间的区别在于,您尝试绑定到列表,而不是int []。

当您要填充多选列表框时,必须设置一个DataValueField和一个DataTextfield,否则不设置任何值。

model.AvailableTestTypes = new MultiSelectList(testList, "Id", "Name);

然后尝试使用此类:

public class TestModel
{
    public MultiSelectList AvailableTestTypes { get; set; }
    public int[] SelectedTestTypes { get; set; } 
}

在您的PostForm操作中,您可以使用ID检索TestType。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM