1

Sectionsプロジェクトを管理する MVC 3 Razor アプリケーションを作成しました。これらのプロジェクト内で管理する必要がありますProjects

それで、モデルProjects.cs、コントローラーを作成し、データテーブルProjectsControllerを取得しました。Projects.sdfうまく動作します

次に、 for に同じものを追加しましたが、 in に接続 (結合) された (もちろん作成した)という名前のフィールドSectionsSections必要です。また、 、および からソートできるようにする必要がありますprojectIDIDProjects.sdfprojectIDDropDown

例: を使用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

本当に異なるdbcontextが必要ですか?それが1つの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; }
    }
}

セクションクラスにIDと呼ばれる主キーフィールドまたは主キーとしてフラグが付けられたidプロパティがある限り、EFは、Projectsがテーブル構造にセクションの外部キーを持っているという論理的な飛躍を遂げます。これで、プロジェクトモデルはセクションオブジェクトにアクセスできるようになります。私が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 のドロップダウンの名前です。2 番目は入力する選択リスト、3 番目は選択された値です。もっと良い方法があると確信しています。たとえば、モデルに IList を設定し、ビューで foreach ループを実行できます。それはすべて、あなたのケースで何が最適かによって異なります。

于 2012-05-29T12:38:09.790 に答える