Проверка не работает с использованием @ Html.HiddenFor - PullRequest
0 голосов
/ 04 января 2012

У меня есть следующий код:

@Html.HiddenFor(model => model.Posted, Model.Posted = DateTime.Now)

Но проверка не работает. Сбой при запуске приложения и попытке редактирования или создания элемента.

public ActionResult Create()
{
    return View(new NewsItem());
}

У меня также есть следующий код в моем контроллере, и приложение все это работает так, как я хочу, например, оно вводит текущую дату и сохраняет ее, но если я оставляю одно поле редактора пустым или все поле редактора пустым приложение вылетает и выдает следующую ошибку:

Ссылка на объект не установлена ​​для экземпляра объекта.

Я не знаю, что это значит? Я думал, что проверка по умолчанию, предоставляемая MVC3 C #, должна работать? Так что не так? Кто-нибудь может помочь?

/* This line of code is what is provided for validation it is pretty much 
   similar on all the edit, delete and create views. */
@Html.ValidationMessageFor(model => model.Posted)   

Ответы [ 2 ]

5 голосов
/ 04 января 2012

Ваш второй аргумент для Html.HiddenFor выглядит неправильно.Если вы хотите установить значение, попробуйте это вместо:

@{
    Model.Posted = DateTime.Now;
}
@Html.HiddenFor(m => m.Posted)

Или еще лучше, установите значение в контроллере:

public ActionResult Create()
{
    return View(new NewsItem { Posted = DateTime.Now });
}

Тогда вы можете просто сделать это:

@Html.HiddenFor(m => m.Posted)

Обновление после комментария 2

Какая дата вводится?Какой должна быть правильная дата?В вашем вопросе указана проблема с NullReferenceException (ссылка на объект не установлена ​​на экземпляр объекта).Возможно, вам придется опубликовать код для вашей модели NewsItem, чтобы кто-нибудь помог вам в дальнейшем.

Обновление после комментария 4

Я не вижу, где какой-либо код, который яПредложено изменить любой функционал приложения.И если вы не понимаете, что такое NullReferenceException, похоже, вы не программировали очень долго.Так что я возьму твой удар в мою неправильность с зерном соли.

Исключение NullReferenceException на самом деле не имеет ничего общего с проверкой.Это происходит, когда вы пытаетесь вызвать метод, свойство или другой член переменной, ссылающейся на ноль.Примите во внимание следующее:

var myVariable = "Hello, world";
if (DateTime.Now.Year > 2011)
{
    myVariable = null;
}
var anotherVariable = myVariable.Substring(1);

До воскресенья этот код работал бы просто отлично.Но как только часы переключатся на 2012 в вашем часовом поясе, они начнут выдавать исключение NullReferenceException.Зачем?Поскольку, когда наступит 2012 год (или более поздний), ваш код будет по существу делать следующее:

null.SubString(1);

Если это не поможет вам определить, откуда исходит ваше исключение NullReferenceException, тогда мы собираемсянужно вызвать экстрасенса.Если, конечно, вы не отправите еще немного кода.

0 голосов
/ 05 января 2012

Давайте сделаем это просто:

  • Удалите все ссылки на Model.Posted на ваш взгляд,
  • Установите для свойства Опубликовано значение DateTime.Now () в действии Post Create в контроллере.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...