Несколько кнопок отправки в одном представлении с использованием различных методов действия - PullRequest
0 голосов
/ 03 августа 2011

Я использую ASP.NET MVC 3.

У меня есть представление, которое принимает модель представления типа EditGrantApplicationViewModel. В этом представлении модель у меня есть свойства. Когда представление загружается в первый раз, я передаю ему экземпляр этой модели представления:

public ActionResult Create()
{
   EditGrantApplicationViewModel viewModel = new EditGrantApplicationViewModel();

   return View(viewModel);
}

В этом представлении у меня есть кнопка отправки, которая берет значения формы и добавляет ее в базу данных. У меня также есть другая кнопка в этом представлении, но ее не нужно нажимать, и при нажатии она берет номер сотрудника, выполняет поиск в базе данных и получает сведения о сотруднике. Эти данные возвращаются в то же представление и предварительно заполняют это представление данными, чтобы пользователю не приходилось вводить данные. Данные могут быть получены таким способом или могут быть введены вручную.

Затем пользователь может продолжить и ввести другие поля и редактировать любые поля, которые были возвращены из поиска. После этого пользователь может нажать кнопку отправить, чтобы добавить его в базу данных. Как бы я сделал что-то подобное? Нужно ли мне заполнять формы на моей странице, один из которых будет использовать метод действия Create, а другой - метод действия GetEmployee для поиска в базе данных? Должен ли я использовать несколько форм на моей странице? Если так, имеет ли несколько форм наилучшую практику? Любые примеры кода будут оценены:)

Ответы [ 2 ]

2 голосов
/ 03 августа 2011

Вы можете использовать jquery для запуска вызова AJAX, чтобы возвратить некоторые данные JSON, когда вы нажимаете кнопку:

$("someButton").click(function() {
    $.ajax({
        url: "/Service/GetData",
        data: {}, // pass data here
        dataType: "json",
        type: "POST",
        success: function() {
            // manipulated return JSON data here
        }
    });
});

У вас может быть контроллер, который вызывает службу и возвращает JSON, или служба делает этои пропустить контроллер.Если вы делаете это в контроллере:

public ActionResult GetData() {
    var someData = service.GetData();

    return Json(someData);
}
0 голосов
/ 03 августа 2011

Предполагая, что данные о сотрудниках являются частью EditGrantApplicationViewModel, вы можете просто заполнить поля формы результатами вызова веб-службы.В основном это должно работать так же, как пользователь, вручную вводящий значения.До тех пор, пока ваши поля будут названы правильно, механизм связывания будет их подбирать.

Я предполагаю, что ваш вызов веб-службы является асинхронным вызовом со страницы с использованием JavaScript.

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