Asp.net mvc 实体框架&x2B;MVC&x2B;脚手架

Asp.net mvc 实体框架&x2B;MVC&x2B;脚手架,asp.net-mvc,entity-framework,asp.net-mvc-scaffolding,Asp.net Mvc,Entity Framework,Asp.net Mvc Scaffolding,我不想要视图模型。 我有一个模型如下 public class Person { #region private variables private string _firstName; private string _lastName; private string _middleName; private Gender _gender; #endregion #region

我不想要视图模型。 我有一个模型如下

public class Person
    {
        #region private variables
        private string _firstName;
        private string _lastName;
        private string _middleName;
        private Gender _gender;
        #endregion
        #region public properties
        public string FirstName
        {
            get { return _firstName; }
            set { _firstName = value; }
        }
        public string LastName
        {
            get { return _lastName; }
            set { _lastName = value; }
        }
        public string MiddleName
        {
            get { return _middleName; }
            set { _middleName = value; }
        }
        public virtual Gender Gender
        {
            get { return _gender; }
            set { _gender = value; }
        }
        #endregion
    }
 public class Student:Person
    {
        #region private variables
        private int _id;
        private DateTime _dateOfBirth;
        private bool _isDeleted;
        private Guradians _guardian;
        #endregion
        #region public properties
        public int ID
        {
            get { return _id; }
            set { _id = value; }
        }
        public DateTime DateOfBirth
        {
            get { return _dateOfBirth; }
            set { _dateOfBirth = value; }
        }
        public bool IsDeleted
        {
            get { return _isDeleted; }
            set { _isDeleted = value; }
        }
        public virtual Guradians Guardian
        {
            get { return _guardian; }
            set { _guardian = value; }
        }
        #endregion
    }
public class Gender
    {
        #region private variable
        private int _id;
        private string _description;
        private bool _isDeleted;
        #endregion
        #region public properties
        public bool IsDeleted
        {
            get { return _isDeleted; }
            set { _isDeleted = value; }
        }

        public string Description
        {
            get { return _description; }
            set { _description = value; }
        }

        public int ID
        {
            get { return _id; }
            set { _id = value; }
        }
        #endregion
    }
public class Guradians:Person
    {
        #region private variable
        private int _id; 
        private Relationship _relationship;
        #endregion
        #region public properties
        public int ID
        {
            get { return _id; }
            set { _id = value; }
        }
        public Relationship Relationship
        {
            get { return _relationship; }
            set { _relationship = value; }
        }

        #endregion
    }
public class Relationship
    {
        #region private variables
        private int _id;
        private string _description;
        #endregion
        #region public properties
        public int ID
        {
            get { return _id; }
            set { _id = value; }
        }


        public string Description
        {
            get { return _description; }
            set { _description = value; }
        }
        #endregion
    }
我试图创建一个视图使用学生模型,脚手架模板-创建。 “创建模板”不会为复杂属性创建html帮助程序。 我是MVC新手。请帮忙

景色看起来像

@model PracticeWebApp.Models.Student

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Index</h2>

@using (Html.BeginForm()) {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>Student</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.DateOfBirth)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.DateOfBirth)
            @Html.ValidationMessageFor(model => model.DateOfBirth)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.IsDeleted)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.IsDeleted)
            @Html.ValidationMessageFor(model => model.IsDeleted)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.FirstName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.FirstName)
            @Html.ValidationMessageFor(model => model.FirstName)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.LastName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.LastName)
            @Html.ValidationMessageFor(model => model.LastName)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.MiddleName)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.MiddleName)
            @Html.ValidationMessageFor(model => model.MiddleName)
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}
@model PracticeWebApp.Models.Student
@{
ViewBag.Title=“Index”;
Layout=“~/Views/Shared/_Layout.cshtml”;
}
指数
@使用(Html.BeginForm()){
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
学生
@LabelFor(model=>model.DateOfBirth)
@EditorFor(model=>model.DateOfBirth)
@Html.ValidationMessageFor(model=>model.DateOfBirth)
@LabelFor(model=>model.IsDeleted)
@EditorFor(model=>model.IsDeleted)
@Html.ValidationMessageFor(model=>model.IsDeleted)
@LabelFor(model=>model.FirstName)
@EditorFor(model=>model.FirstName)
@Html.ValidationMessageFor(model=>model.FirstName)
@LabelFor(model=>model.LastName)
@EditorFor(model=>model.LastName)
@Html.ValidationMessageFor(model=>model.LastName)
@LabelFor(model=>model.MiddleName)
@EditorFor(model=>model.MiddleName)
@Html.ValidationMessageFor(model=>model.MiddleName)

} @ActionLink(“返回列表”、“索引”) @节脚本{ @Scripts.Render(“~/bundles/jqueryval”) }
使用主键和外键。如果要保存数据库,可以先保存实体框架代码,也可以先保存数据库


定义控制器post方法

我做了关于继承对脚手架的影响的实验,从模型中创建了一个没有数据注释(主键/外键等)的视图,发现您的问题可以通过将
性别
基类继承到
个人
类中来解决:

public class Person : Gender
{
    public String FirstName { get; set; }
    public String LastName { get; set; }
    public String MiddleName { get; set; }
    public virtual Gender Gender { get; set; }
}
继承使用
Gender
类的虚拟属性引用将所有
Gender
成员属性包含到
Person
类中,因此它将为
Description
属性生成HTML帮助程序:

<div class="editor-label">
    @Html.LabelFor(model => model.Description)
</div>
<div class="editor-field">
    @Html.EditorFor(model => model.Description)
    @Html.ValidationMessageFor(model => model.Description)
</div>

@LabelFor(model=>model.Description)
@EditorFor(model=>model.Description)
@Html.ValidationMessageFor(model=>model.Description)

注意:由于
Gender
Student
类都具有数据类型完全相同的
IsDeleted
属性(即
bool
),因此视图中使用的
IsDeleted
指的是
Student
类,而不是
Gender
,这是什么意思“创建模板不会为复杂属性创建HTML帮助程序”(显然是一个脚手架问题)?此外,您可以在不使用私有字段的情况下声明属性,就像
publicstringfirstname{get;set;}
@TetsuyaYamamoto r u说私有属性会导致脚手架问题???不,私有字段与此问题完全无关。在我看来,脚手架问题来自模型类之间的关系(包括扩展基类的某些类,请注意视图中缺少哪些属性名)@TetsuyaYamamoto如果您注意到,在上面的代码中,Person类具有性别属性(这是另一个复杂类型)。当我尝试使用“创建”脚手架生成视图时,我使用的是学生模型(子类),该视图没有任何性别帮助器,而它有其他简单属性,如Person类(父类)的firstname、lastname。您的问题不清楚!