1

我创建了一个管理项目的 MVC 3 Razor 应用程序,并且应该Sections在这些Projects.

因此,我制作了一个模型Projects.cs、控制器ProjectsController,并为自己准备了一个Projects.sdf数据表。工作得很好

然后我添加了相同的 for Sections,但Sections应该有一个名为projectID(当然是)与IDin连接(连接)的字段Projects.sdf;另外,我需要它能够被排序projectID,并且从DropDown

例如:DropDown用于更改表数据。如果假设我从项目列表中选择project1,我希望列表与 CRUD 一起显示其中的所有Sections内容。Project

我已经尝试了几件事,但到目前为止都没有奏效,我知道如何在常规应用程序中做到这一点,但在 MVC 中却不知道,所以我请求一些帮助。还尝试添加视图并使其从模型数据中填充DropDown,但一点也不好。SectionsProject

所以我需要关于如何做到这一点的帮助:(

谢谢,麻烦您了。

添加

项目有很多部分,是的,我正在使用 EF,但正如我所说,对它不太有经验。

至于数据上下文,这是Project

namespace MyProject.Models
{
    public class Projects
    {
        public int ID { get; set; }
        public string projectName { get; set; }
        public string shortDesc { get; set; }
    }

    public class ProjectsDBContext : DbContext 
    {
        public DbSet<Projects> Projects { get; set; }        
    }
}

这是Section

namespace MyProject.Models
{
    public class Sections
    {
        public int ID { get; set; }
        public int projectID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }

    public class SectionsDBContext : DbContext 
    {
        public DbSet<Sections> Sections { get; set; }
    }
}

加法2

所以我做了一个模型命名MyProjectModels.cs

namespace MyProject.Models 
{
    public class Project
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }

    public class Section
    {
        public int ID { get; set; }
        public int projectID { {get; set;}
        public string Name { get; set; }
        public string Description { get; set;}
    }
}

所以基本上我有点想明白了。请让我知道这对于模型是否可以,或者我需要将它们放在单独的文件中吗?另外,我应该如何从这一点声明上下文,提示就足够了:)

谢谢


我就是这样做的。它显示正确,但我不知道如何使用它,例如在表格中显示不同的值......

<select id="select1" name="select1">
        @foreach (var item in Model.Enrollments)
        {
        <option value=@Html.DisplayFor(modelItem => item.Course.Title)>@Html.DisplayFor(modelItem => item.Course.Title)</option>
        }
</select>

我的意思是表中的不同值,当我在这种情况下选择不同的注册时。我想在表格中显示不同的值。

4

2 回答 2

2

你真的需要有不同的 dbcontexts 吗?如果它是一个 sdf 文件,那么我猜不是,你的 dbcontext 应该看起来像

namespace MyProject.Models
{
    public class DatabaseContext: DbContext 
    {
         public DbSet<Projects> Projects { get; set; } 
         public DbSet<Sections> Sections{ get; set; }         
    }
}

然后在您的项目模型中,您将拥有部分的属性

namespace MyProject.Models
{
    public class Projects
    {
        public int ID { get; set; }
        public string projectName { get; set; }
        public string shortDesc { get; set; }
        public Sections section { get; set; }
    }
}

你的部分只需要一个 id 字段

namespace MyProject.Models
{
    public class Sections
    {
        public int ID { get; set; }
        public int projectID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }
}

只要您的sections 类有一个称为ID 的主键字段或标记为主键的id 属性,那么EF 就会实现Projects 在表结构中具有section 的外键的逻辑飞跃。然后,您的项目模型将可以访问 section 对象。我在使用 EF 时遇到的最大障碍是过度考虑数据库方面的问题。

于 2012-05-25T14:54:57.367 回答
0

对于下拉列表,这是我的做法

public class ChangeUserNameViewModel
{
    public ChangeUserNameViewModel()
    {
        var user = User.GetAllButBuiltIn();
        Users = new SelectList(user, "UserName", "UserName");
    }

    public User User
    {
        get;
        set;
    }

    [DisplayName("User Name")]
    public SelectList Users
    {
        get;
        set;
    }


    public string UserName
    {
        get;
        set;
    }
}

然后在视图中我引用视图模型

@model ChangeUserNameViewModel
@Html.DropDownList("UserName", Model.Users, "Choose")

第一个参数是 html 中下拉菜单的名称。第二个选择列表填充它,第三个选择值。我确信有更好的方法来做到这一点。例如,您可以在模型中有一个 IList,然后在您的视图中执行一个 foreach 循环。这一切都取决于在您的情况下最有效的方法。

于 2012-05-29T12:38:09.790 回答