Модели проверки ошибок, когда в полях таблицы не допускаются значения NULL - PullRequest
1 голос
/ 29 сентября 2010

Я использую .NET 4.0 и инфраструктуру сущностей для проверки на стороне сервера.У меня есть простая таблица под названием «Контакты», которая выглядит следующим образом:

ID int Не разрешать пустые значения
FirstName nvarchar (50) Не разрешать пустые значения
SecondName nvarchar (50) Не разрешать пустые значения
MobileNumber nvarchar (50) Не разрешать пустые значения
HomeNumber nvarchar (50) Разрешать пустые значения

У меня есть ContactController и строго типизированное представление типа Contact, которое отображает текстовые поля редактирования.Когда я нажимаю «Создать», чтобы попытаться создать новый контакт, у меня появляется метод контроллера, как показано ниже:

    [HttpPost]
    public ActionResult Create(Contact contact)
    {

        if (ModelState.IsValid)
        {

            ContactService.CreateContact(contact);
            RedirectToAction("Index");
        }

        return View();

    }

Если я нажимаю кнопку, ничего не вводя, мой код прерывается, прежде чем он попадет сюда.Ошибка поступает в Contacts.Designer.cs в этой строке:

_FirstName = StructuralObject.SetValidValue (значение, false);

    [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
    [DataMemberAttribute()]
    public global::System.String FirstName
    {
        get
        {
            return _FirstName;
        }
        set
        {
            OnFirstNameChanging(value);
            ReportPropertyChanging("FirstName");
            _FirstName = StructuralObject.SetValidValue(value, false);
            ReportPropertyChanged("FirstName");
            OnFirstNameChanged();
        }
    }

Это ConstraintExceptionи это говорит, что это свойство не может быть установлено в нулевое значение.Если я установлю в полях все значения NULL, то код работает, и этой ошибки не возникает, и проверяется, проверена ли модель на ожидаемую.Что здесь не так, пожалуйста?

Спасибо

1 Ответ

1 голос
/ 29 сентября 2010

Вот решение. Я должен был добавить

[DisplayFormat (ConvertEmptyStringToNull = false)]

аннотация к полю, не допускающая пустых значений. Полное объяснение этой ошибки здесь .

[MetadataType(typeof(Contact_Validate))]
public partial class Contact
{



    public string FullName()
    {

        return _FirstName + " " + _SecondName;
    }


}

public class Contact_Validate
{
    [Required]
    [DisplayFormat(ConvertEmptyStringToNull = false)]
    public string FirstName { get; set; }

    [Required]
    [DisplayFormat(ConvertEmptyStringToNull = false)]
    public string SecondName { get; set; }

    [Required]
    [DisplayFormat(ConvertEmptyStringToNull = false)]
    public string MobileNumber { get; set; }
    public string HomeNumber { get; set; }

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