在Razor ListBoxFor上回发单个项目

时间:2013-06-14 10:37:37

标签: asp.net-mvc razor asp.net-ajax html-helper

我有一个ListBoxFor帮助器,其中填充了必须从db验证的用户。我单击一个用户,然后单击“提交”按钮。这很好,并将db中的admin验证位设置为true。

然而,我想要做的是点击列表中的项目,自动回发值,然后我将填写带有用户描述的textarea。我收集我将使用AJAX,但发现很难通过这种方式获得有关使用AJAX和HTMLHelpers的良好文档。

编辑:根据建议更新模型,视图和控制器。

型号:

public class UserAdminVerifyModel
{
    public SelectList ToBeVerifiedAdmin { get; set; }
    public string[] SelectedUsers { get; set; }
    public List<string> userdesc { get; set; }
}

控制器:

    public ActionResult AdminVerifyListBox()
    {
        UserAdminVerifyModel verifusermodel = new UserAdminVerifyModel();
        verifusermodel.ToBeVerifiedAdmin = GetUsersToBeVerified();
        return View(verifusermodel);            
    }

查看:

@using (Html.BeginForm("AdminVerifyListbox", "UserRegLog"))
{
@Html.ListBoxFor(x => x.SelectedUsers, Model.ToBeVerifiedAdmin)
<br /> 
<input type="submit" value="Submit" title="submit" />
}
}

1 个答案:

答案 0 :(得分:1)

ListBoxFor用于生成多选列表。这意味着您不应将其绑定到简单的字符串属性。您应该使用字符串数组:

public class UserAdminVerifyModel
{
    public SelectList ToBeVerifiedAdmin { get; set; }
    public string[] SelectedUsers { get; set; }
    public List<string> userdesc { get; set; }
}

并在视图中将ListBoxFor绑定到SelectedUsers集合属性:

@using (Html.BeginForm("AdminVerifyListbox", "UserRegLog"))
{
    @Html.ListBoxFor(x => x.SelectedUsers, Model.ToBeVerifiedAdmin)
    <br /> 
    <input type="submit" value="Submit" title="submit" />
}

此外,您的ToBeVerifiedAdmin已经是SelectList。您不应该在视图中再次调用构造函数。这应该在您的控制器操作中完成,该操作负责从您的信息存储位置填充此ToBeVerifiedAdmin属性。