Установить значение входного столбца в коде в MVC - PullRequest
2 голосов
/ 19 октября 2011

Сегодня я создал свое первое приложение MVC в ASP.NET. У меня есть столбец даты и времени «CreatedAt», который должен быть заполнен текущей датой, чтобы он не отображался в форме ввода. Но сгенерированный код имеет этот код:

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

Отображает текстовое поле в форме ввода. Я не хочу отображать это, вместо этого это должно быть установлено в коде позади. Как я могу это сделать?

1 Ответ

2 голосов
/ 19 октября 2011

ASP.NET MVC не имеет концепции «выделенного кода». Проще говоря, вы отправляете данные из вашего View, и они обрабатываются в вашем контроллере.

Так что, если это действие, выполняемое POST, тогда мы можем отправить данные обратно в контроллер, и, что еще лучше, мы можем сохранить эти данные «скрытыми» в представлении текстового поля.

По вашему мнению, вы должны заменить это следующей строкой:

 @Html.HiddenFor(m => m.CreatedAt, DateTime.Now);

Затем, когда модель отправляется в контроллер, свойство CreatedAt будет заполнено DateTime.Now.

Когда вы размещаете что-либо, оно должно перейти к методу действия:

открытый класс MyController: Controller { // другие вещи

[HttpPost]
public ActionResult Edit(Product product)
{
    product.CreatedAt // should equal the DateTime.Now set when you created the View
}

}

или вы можете установить его в контроллере после него POST s:

публичный класс MyController: контроллер { // другие вещи

[HttpPost]
public ActionResult Edit(Product product)
{
    product.CreatedAt = DateTime.Now;
}

}

В этом контексте вы можете столкнуться с проблемами с Html.Hidden, если вы это сделаете, убедитесь, что использует обходное решение на месте .

...