Как передать объект из представления Index в представление редактирования с использованием MVC3 - PullRequest
0 голосов
/ 17 ноября 2011

Я создал простой сервис WCF, который должен быть настроен с помощью пользовательского интерфейса MVC3.

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

Я хочу сделать что-то подобное в индексном представлении ...

<div>
    @Html.ActionLink("Edit", "Edit", model)
</div>

и затем использовать модель в контроллере следующим образом ...

[HttpPost]
    public ActionResult Edit( SettingsModel Config)
    {
        try
        {
            List<string> configErrors = null;

            if (ModelState.IsValid)
            {
                // Set up a channel factory to use the webHTTPBinding
                using (WebChannelFactory<IChangeService> serviceChannel = new WebChannelFactory<IChangeService>(new Uri(baseServiceUrl)))
                {
                    IChangeService channel = serviceChannel.CreateChannel();
                    configErrors = channel.SetSysConfig(Config);
                }
          }
            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

но это не работает.

Любые предложения ???

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

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

В вашем случае модель имеет тип «SettingsModel». Необходимо убедиться, что публикуемые данные формы имеют формат, который можно сопоставить с объектом «SettingsModel».

Тот же вопрос обсуждается в другой ветке: Не можете понять, почему модель не имеет значения при обратной передаче?

Ознакомьтесь с этой статьей: NerdDinner Шаг 6: ViewData и ViewModel

В приведенной выше статье внимательно изучите раздел «Использование шаблона ViewModel». Я думаю, это то, что вы ищете.

0 голосов
/ 17 ноября 2011

Вам нужно будет опубликовать значения, чтобы заполнить объект SettingsModel в действии Edit. Вы можете сделать это, используя скрытые поля формы, если вы не хотите, чтобы пользователь видел это. В противном случае у вас не будет никаких параметров в действии «Изменить» и будет сделан еще один вызов веб-службы для заполнения модели параметров.

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