MVC передача данных из вида в метод действия - PullRequest
2 голосов
/ 11 января 2012

У меня есть одно представление с формой, и я хочу, чтобы при нажатии кнопки было загружено то же представление с новой информацией из значений текстового поля формы. Новая информация будет найдена в базе данных - я делаю это в контроллере.

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

Но я читал, что передача данных из представления в cantroller является плохой практикой, поскольку MVC специально разработан для этого.

У кого-нибудь есть идеи, как спроектировать это?

Ответы [ 4 ]

1 голос
/ 11 января 2012

Описание

View вызывается Controller. Например, вы можете поместить форму в свой View и отправить ее в свой ActionMethod при отправке формы.

Это основы ASP.NET MVC, вы должны изучить его.

Пример

Модель

public class ViewModel
{
    public string SomeProperty { get; set; }
}

View

@model MvcApplication2.Models.ViewModel;

@using (Html.BeginForm())
{
    @Html.TextBoxFor(x => x.SomeProperty)
    <input type="submit" />
}

Контроллер с ActionMethods

public class HomeController : Controller
{
    [HttpGet]
    public ActionResult Index()
    {
        return View(new ViewModel());
    }

    [HttpPost]
    public ActionResult Index(ViewModel model)
    {
        // do something with your model
        // load from something from database for example
        return View(model);
    }
}

Дополнительная информация

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

В дополнение к тому, что было сказано, для перезагрузки того же представления вы можете рассмотреть возможность использования функциональности ajax, предоставляемой MVC.Тогда вам не придется по-настоящему перезагружать всю страницу, а только элемент на странице.Очень простые примеры можно найти здесь

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

Нажатие кнопки должно проявляться как HTTP POST для действия контроллера, обрабатывающего ввод. Контроллер обработает ввод, извлечет соответствующую информацию из базы данных и вернет представление, которое будет заполнено этими новыми данными.

Представление должно ссылаться на действие контроллера для определения адреса HTTP POST, но само по себе не передает данные в контроллер.

Помните, что нажатие кнопки не обрабатывается «Представлением», которое является просто шаблоном для отрисованного HTML, но вместо этого обрабатывается браузером клиента.

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

Где именно вы прочитали, что плохо переносить данные из представления в контроллер? Вам нужно передать некоторую информацию в действие, чтобы указать, какие данные нужно извлечь.

В вашем сценарии вы можете использовать значения маршрута для передачи идентификатора:

@Html.ActionLink("Get Latest", "GetLatest", new { Id = Model.Id })

Где модель представления имеет свойство Id для элемента текущего представления.

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