【问题标题】:Html.ListBoxFor error problem asp.mvc 3Html.ListBoxFor错误问题asp.mvc 3
【发布时间】:2011-07-03 02:36:27
【问题描述】:

我的代码中有类似的内容,但出现错误:异常详细信息:System.ArgumentException:值不能为空或为空。 参数名称:名称。我究竟做错了什么 ?感谢您的帮助

@model IEnumerable<NHibernateFluentProject.Patient>

@Html.ListBoxFor(model => model, new SelectList(Model,"ID", "FirstName"));

【问题讨论】:

标签: asp.net html asp.net-mvc-3 razor listbox


【解决方案1】:

@Html.ListBoxFor 用于您的强类型视图模型。这可能有助于绑定到您的财产。第一部分将采用单个项目的 lambda 表达式作为列表框的默认选择,第二部分将采用项目集合来显示所有列表框项目。 例如:你有以下两个类。

public class HospitalViewModel
{
    public string SelectedPatient { get; set; }
    public IEnumerable<Patient> AllPatients { get; set; }
}
public class Patient
{
    public int Id { get; set; }
    public string FirstName { get; set; }
}

在你看来,你应该这样做

@model HospitalViewModel

@Html.ListBoxFor(model => model.SelectedPatient, new SelectList(Model.AllPatients,"Id", "FirstName"));

或者,如果您只想将所有患者绑定到一个列表框,请改用 Html.ListBox

@model IEnumerable<Patient>

@Html.ListBox("ListBoxName", new SelectList(Model,"Id", "FirstName"));

【讨论】:

  • 我正在寻找类似您的答案的内容,但不是字符串 SelectPatient 有没有办法收集多个选择?因此,如果用户选择了多个患者,他们将出现在某个集合列表中。有什么想法吗?
  • @NullReference:在你的情况下,你可能需要一个 Ajax 调用来发送一个 json 对象来包含你从客户端选择的所有 ListItems 到控制器来处理它。
  • 感谢艾伦的回复。其实我在这里stackoverflow.com/questions/3194143/…找到了答案。
【解决方案2】:

您需要传递一个 lambda 表达式,其中包含要绑定列表框的属性。

【讨论】:

  • @petro: m =&gt; m.SomeProperty
猜你喜欢
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
  • 1970-01-01
  • 2023-02-13
  • 1970-01-01
相关资源
最近更新 更多