Передача модели в виде обратно к действию - PullRequest
0 голосов
/ 16 июля 2010

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

Чтобы отправить ее обратно, я указываюУправляй, действуй и используй новый {dom = Model} для указания параметра.

dom - это список (так что это список объектов домена. Моя модель, переданная в IQueryable.Я до сих пор ничего не получаю от просмотра. Вот фрагмент, использующий элементы управления Telerik

VIEW

<% Html.Telerik().Grid(Model).Name("Domains")
        .DataKeys(dataKeys => dataKeys.Add(c => c.DomainId)).DataKeys(dataKeys => dataKeys.Add(c => c.Timestamp))
        .Columns(columns =>
            {
                columns.Template(o =>
                 {  %>
        <%= Html.Encode(Html.OutputAction(ViewData["PerformActions"] as List<string>))%>
        <%
            }).Title("Action");
                columns.Bound(o => o.DomainId);
                columns.Bound(o => o.Name);
                columns.Bound(o => o.SiteId);
                columns.Bound(o => o.ScrubAndRedirect);
                columns.Bound(o => o.ReportingSiteId);
                columns.Bound(o => o.TrafficCopClass);
                columns.Bound(o => o.SiteName);
                columns.Bound(o => o.FeedType);
                columns.Bound(o => o.Active);
            }).Pageable().Sortable().Filterable().DataBinding(db => db.Server().Select("Domains", "Preview", new { doms = Model })).Render();%>


*ACTION*

 public ActionResult Preview(List<Domain> doms)
 {
     return View("Preview", doms.AsQueryable<Domain>());
 }

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 июля 2010

Как правило, в MVC вы не передаете большие списки объектов DOM обратно на сервер, чтобы «перестроить» список объектов сущности или домена. Когда значения публикуются в действии контроллера, они почти всегда из формы HTML. За кулисами MVC извлекает значения из POST через

Request.Forms["fieldName"]

И затем попытка автоматически сопоставить значения с параметрами в вашем ActionMethod.

Если я понимаю ваш сценарий, наиболее распространенной практикой будет отправка или передача KEY (или некоторого идентификатора) в контроллер при запуске действия, а затем использование его для получения необходимых объектов домена (либо из кэша из базы данных, с диска и т. д.). Если важна масштабируемость, хорошая стратегия кэширования может помочь избежать дорогостоящих операций ввода-вывода.

Надеюсь, это поможет.

0 голосов
/ 16 июля 2010

Я думаю, что вы хотите, чтобы ваши действия Preview и Commit выполнялись в List doms.Если предварительный просмотр не публикует его, вам может понадобиться где-нибудь EditorForModel (даже если он скрыт).Другими словами, ваша правка просмотра публикует действие предварительного просмотра, которое показывает представление, а затем ЭТА страница должна публиковать данные для вашего действия фиксации.Я верю, что сделал бы это.Надеюсь, что это помогает ..

...