繁体   English   中英

无法将模型中的类变量绑定到HTML.DROPDOWNLISTFOR <>

[英]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.

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