1

这让我发疯,我研究了 StackOverflow 上的相关帖子。

基本上我有两张表,专辑和流派,前者有一个流派的外键。我在 EF5 中使用 Model First 对此进行了建模,并使用 MS 的 T4 生成器生成了上下文和类文件。因此我的域类代码是:

{
using System;
using System.Collections.Generic;

public partial class Album
{
    public int Id { get; set; }
    public string Title { get; set; }
    public decimal Price { get; set; }
    public string AlbumArtUrl { get; set; }

    public int GenreId {get; set;}
    public virtual Genre Genre { get; set; }
}
}

你会注意到我添加了:

public int GenreId {get; set;}

根据指导,以便使脚手架能够在控制器中的视图和“SelectList”代码中创建下拉列表。但事实并非如此!但是,它确实在视图中创建:

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

所以我真的很困惑。任何想法将不胜感激。

谢谢,

埃德

PS我似乎正在运行带有ASP.NET MVC 3 Tools Update的VS2010 SP1,因为我尝试安装它并且它说它已经安装了。

4

1 回答 1

1

耶...啊啊!!!我已经让它与 MS Scaffold 一起工作。现在我需要弄清楚如何。我认为问题在于我使用的是模型优先,我需要确保将额外的外键属性添加到模型中,而不仅仅是域类代码中,它需要在 EDMX 中。但是,这会产生另一个问题,即现在在 SQL Server 中创建了 2 个字段,一个来自 Navigation 属性,另一个来自该字段。我可能需要玩映射。我会

生成的控制器代码:

    // GET: /Album/Create

    public ActionResult Create()
    {
        ViewBag.GenreId = new SelectList(db.Genre, "Id", "Name");
        return View();
    } 

相关查看代码:

    <div class="editor-label">
        @Html.LabelFor(model => model.GenreId, "Genre")
    </div>
    <div class="editor-field">
        @Html.DropDownList("GenreId", String.Empty)
        @Html.ValidationMessageFor(model => model.GenreId)
    </div>

这就是我想要的。显然,如果有人想对此发表评论,那就太好了,但它确实有效。

谢谢。

于 2012-09-29T00:56:55.967 回答