0

我有一个 ListBoxFor 助手,其中填充了必须从数据库验证的用户。我单击单个用户,然后单击提交按钮。这工作正常,并将数据库中的管理员验证位设置为 true。

但是,我要做的是单击列表中的一个项目,自动回发一个值,然后我将用用户描述填充一个文本区域。我收集我将使用 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" />
}
}
4

1 回答 1

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从存储您的信息的任何位置填充此属性。

于 2013-06-14T10:47:06.847 回答