[英]Unable to bind class variable in model to HTML.DROPDOWNLISTFOR<>
我所拥有的是在模型中声明的业务objct实体类变量,但是当我尝试将类变量的成员绑定到html.dropdownlist时,它不起作用:
所以这是我的模型:
public class pc
{
public pcp pk{get;set;}
public int zip{get;set;}
List<Suf> SufList{get;set;} //**
}
这里pk是业务对象pcp的变量
public class pcp :basec
{
[Key]
public int pcid;
}
public class basec
{
// **public string suf**
}
现在在我看来,我将上述模型绑定到一个下拉列表中:m是模型,即pc类
@Html.DropDownListFor(m => m.pk.suf, new selectlist(m => m.SufList,
"Key", "Value", m.pk.suf)
它提供了一个异常Object reference not set to an instance of an object
在此下拉列表中Object reference not set to an instance of an object
。
但是同时如果我直接在m中声明suf变量并使用如下所示的绑定:
@Html.DropDownListFor(m => m.suf, new selectlist(m => m.SufList,
"Key", "Value", m.suf)
它可以工作,但是您不容易看到这种方法。
关于我在这里需要做的任何建议,以正确设置?
此错误意味着您的属性pk
为空,但是您正在尝试访问该属性( suf
)。 确保您的属性pk
具有值(在将模型传递到视图之前,在控制器上的模型上对其进行设置),并且错误应该消失。
呈现您的视图的示例控制器动作:
public ViewResult YourAction() {
pcp model = new pcp {
pk = new pk(),
SufList = new SufList {
// Set list items here
}
// set other properties as needed
};
return View("YourViewName", model);
}
另外,我强烈建议使用更具描述性的类和属性名称(而不是缩写)和一致的命名约定。 通常,C#用法是CamelCase类/属性名称,首字母大写。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.