Entity Framework Code 1st & Razor не создает DropDown для полей FK - PullRequest
0 голосов
/ 20 марта 2012

Я использую ASP.NET MVC3 вместе с Razor и Entity Framework Code First для создания нового и очень маленького приложения. Из всего, что я прочитал и увидел, когда между классами и данными существуют отношения FK, Razor должен создать выпадающее (выбрать) поле ввода. Однако, когда запускается приведенный ниже код, я получаю текстовое поле для PartnerTypeId и PartnerSubTypeId. Не уверен, где моя неисправность.

КЛАССЫ

public class Partner
{
    public int Id { get; set; }

    [Required]
    [MinLength(5)]
    [MaxLength(300)]
    public String Name { get; set; }

    [Required]
    public int PartnerTypeId { get; set; }
    public PartnerType PartnerType { get; set; }

    public int PartnerSubTypeId { get; set; }
    public PartnerSubType PartnerSubType { get; set; }

}

public class PartnerType
{
    public int Id { get; set; }

    [Required]
    [MaxLength(40)]
    public String Name { get; set; }

    [Required]
    public bool IsActive { get; set; }

    public virtual ICollection<Partner> Partners { get; set; }
}

VIEW

<fieldset>
        <legend>Partner</legend>

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

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

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

1 Ответ

1 голос
/ 21 марта 2012

Из всего, что я прочитал и увидел, когда между классами и данными существует отношение FK, Razor должен создать раскрывающееся (выбрать) поле ввода.

Не знаюзнать, где вы видели или читали такие вещи.Вот шаблоны по умолчанию в ASP.NET MVC.Как вы можете видеть, ни один из них не генерирует никаких элементов <select>, за исключением одного для логического свойства, допускающего обнуляемое значение.

Razor ничего не знает о том, что означает отношение FK.Он не знает, что означает база данных.Razor - это шаблонизатор, работающий с моделями и поддерживающий стандартный редактор и шаблоны отображения (см. Статью, с которой я связан), которые зависят от метаданных, которыми вы украшаете свойства модели, и от типа свойств.Если вы не удовлетворены тем, что предлагают шаблоны по умолчанию, вы, конечно, всегда можете написать свои собственные шаблоны.Например, вы можете написать шаблон редактора, который будет генерировать выпадающий список.Конечно, чтобы создать выпадающий список, не забывайте, что вам нужно 2 вещи: скалярное свойство для привязки выбранного значения к и свойство коллекции некоторого сложного типа, где каждый элемент состоит как минимум из 2 свойств, представляющих значение и текстэто будет использоваться для привязки опций выпадающего списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...