ASP.NET MVC3: привязка модели со скрытым полем

#asp.net-mvc-3 #model-binding

#asp.net-mvc-3 #привязка модели

Вопрос:

Вот вид

 @using (Html.BeginForm("Deleted", "Location"))
{
    Html.Hidden("LocationID", Model.LocationID );

    <input type = "submit" value = "Delete" />
}
  

И вот метод, который должен получать данные.

 public ActionResult Deleted(int LocationID)
{
        //Do something with LocationID
        return View();
}
  

Когда я запускаю код, LocationID всегда равен нулю. Я что-то упускаю?

Спасибо за помощь

Ответ №1:

Вызов Html.Hidden возвращает IHtmlString объект, содержащий скрытое поле.
Однако вы ничего не делаете с возвращаемой строкой.

Вам нужно отобразить строку на странице с помощью @ .

Комментарии:

1. Ну, я думаю, мне нужно больше прочитать о Razor. На самом деле, я подумал, что, поскольку я получал intellisense при вводе Html., это означает, что я получу всю магию. Иногда я получаю ошибки, сообщающие мне, что я не должен чрезмерно использовать @. Теперь я не получил никакой ошибки, но она все еще не работала. Спасибо, теперь это работает после того, как я добавил @.

2. Используется @ для отображения выходных данных выражения на странице.

3. @ также используется для переключения с блоков разметки на блоки кода.

4. Я мог бы также добавить, что, если вам не нужно устанавливать значение на лету, Html. HiddenFor создает этот же элемент с меньшим количеством строк для жирного пальца