Как настроить поля, чтобы разрешить пустые строки в моем приложении MVC 3? - PullRequest
1 голос
/ 06 июня 2011

Сначала я спроектировал свою базу данных, а затем с помощью дизайнера EF создал модель для использования в моем приложении MVC. Большинство столбцов nvarchar в моей базе данных имеют пустые строки по умолчанию, и они не допускают нулевые значения.

Как настроить поля, чтобы разрешить пустые строки в моем приложении MVC 3?

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

Свойство «Phone2» может быть пустым, но поведение EF / MVC по умолчанию, по-видимому, делает поле обязательным.

Я создал частичный класс для расширения классов, генерируемых EF, и у меня также есть класс MetadataType для добавления дополнительных атрибутов DataAnnotation в модель.

[MetadataType(typeof(MyClassMetadata))]
public partial class MyClass
{
    // Adding more properties and methods here, mostly to support use of enums in EF.
}

public class MyClassMetadata
{
    // Empty strings are ok here!
    public string Phone2 { get; set; }

    [AllowHtml]
    [UIHint("Html")]
    public string Text { get; set; }
}

Как сделать поле «не обязательным»? Я знаю, что мог бы просто пропустить проверку в моем представлении (использовать простые элементы управления), но кажется, что было бы более «правильным» добавить желаемое поведение в мою модель.

1 Ответ

0 голосов
/ 06 июня 2011

Пустая строка разрешена по умолчанию, поэтому вам не нужно добавлять какие-либо атрибуты.Более того:

Я мог бы просто пропустить проверку в моем представлении (использовать простые элементы управления), но просто кажется более «правильным» добавить желаемое поведение в мою модель.

Это на самом деле неверное предположение.Он используется в простейших приложениях, но обычно считается плохой практикой.ViewModel отвечает за определение правильности ввода данных пользователем.Вы можете по-разному проверять редактирование и вставку - как бы вы достигли этого с помощью аннотаций данных для одного класса?

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