为什么将导航属性绑定到下拉列表不起作用?

时间:2019-04-16 13:27:52

标签: c# asp.net-mvc entity-framework razor entity-framework-6

我正在用剃刀MVC填充DropDownListFor。我正在尝试从Navigational属性填充它,但是它不起作用。

错误:

  

找不到类型或名称空间名称“模型”(您是否缺少using指令或程序集引用?)**

  <div class="form-group">
            @Html.LabelFor(model => model.InspectionReport.InspectionPhase, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-3">
                @Html.DropDownListFor(model => model.InspectionReport.InitialsID, (IEnumerable<model.InspectionReport.Initials>) Model.InspectionReport.Initials,
                   "-Select-",
                 new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.InspectionReport.InspectionPhase, "", new { @class = "text-danger" })
            </div>
        </div>

InspectionReport.cs

namespace VAILCertificates.DAL.Entities
{
    public class InspectionReport
    {
        //General Details
        public int InspectionReportID { get; set; }
        public short? InitialsID { get; set; }
        public virtual Initials Initials { get; set; }


    }
}

Initials.cs

public class Initials
{
    public short? InitialsID { get; set; }
    public string Code { get; set; }
}

1 个答案:

答案 0 :(得分:0)

(IEnumerable<model.InspectionReport.Initials>) Model.InspectionReport.Initials

很遗憾,您不能像这样推断通用参数类型-您需要在此处提供固定类型或接口,而不是使用model.something。使用泛型时,您的类型必须在编译时可由编译器解析,因此您不能在其中使用任何动态代码,既不能使用对象的属性,甚至不能使用typeof(something)

有关泛型类型规范的更多信息,请参见MSDN

在您的特定情况下,您将想用类似这样的代码替换这段代码

(IEnumerable<Necessary.Namespaces.Initials>) Model.InspectionReport.Initials

,用Necessary.Namespaces类所在的任何命名空间替换Initials