2011-01-27 2 views
0

Скажите, что у вас есть MVC-просмотр для редактирования Sandwich: имя сэндвича, цена и т. Д. У этой формы есть своя кнопка Submit. Когда вы отправляете форму, вызывается действие «Редактировать POST», сэндвич обновляется, а View перезагружается.несколько форм в представлении ASP.NET MVC и проблемах маршрутизации

Затем на том же экране под формой Sandwich Edit у нас есть раскрывающийся список ингредиентов с кнопкой Add рядом с ним. Как мне добавить сообщение «Добавить ингредиент» в другое действие, но затем перезагрузить представление «Редактировать»?

RedirectToAction («Изменить») помещает много нежелательных сообщений в URL-адрес.

Вот один способ, который я попробовал, что работает, но помещает мусор в URL:

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult LoginRemoveAssociation(FormCollection values) 
    { 
     int webUserKey = Int32.Parse(values["WebUserKey"]); 
     int associationKey = Int32.Parse(values["AssociationKey"]); 
     db.DeleteWebUserAssociation(webUserKey, associationKey); 
     return RedirectToAction("LoginEdit", new LoginEditViewModel(webUserKey, true)); 
    } 

Вот барахло в URL после RedirectToAction:

https://localhost/mvc/Admin/Login/382?WebUser=Web.Data.Entities.WebUser&Associations=System.Data.Objects.ObjectQuery`1[Web.Data.Entities.Association]&WebUserAssociations=System.Data.Objects.DataClasses.EntityCollection`1[Web.Data.Entities.WebUserAssociation]&ManagementCompanies=System.Collections.Generic.List`1[Web.Data.Entities.ManagementCompany]&ManagementCompanyList=System.Web.Mvc.SelectList&AccessLevels=System.Collections.Generic.List`1[Web.Data.Entities.AccessLevel]&AccessLevelList=System.Web.Mvc.SelectList&PostMessage=Changes%20saved. 
+0

«RedirectToAction (« Редактировать ») ставит много мусора в URL-адрес» .. Можете ли вы опубликовать пример «мусора»? – Chandu

+0

сообщение отредактировано с барахлом :) – Blackcoil

ответ

0

Причина, почему ваш получение «нежелательной почты» в вашем URL-адресе связано с тем, что вы передаете действие LoginEditViewModel для действия редактирования. .Net использует попытку преобразования объекта в имя, чтобы он мог передать его в параметре. Вот почему ваш просмотр Web.Data.Entities .......

Как выглядит ваш контроллер редактирования?

Если его что-то вроде:

public ActionResult Edit(int id) 

Тогда ваш редирект к действию должно быть что-то вроде:

return RedirectToAction("Edit", new { id = 1 }); 

Вместо того, передавая вашу модель представления.

+0

Это было именно оно! Благодаря! – Blackcoil

Смежные вопросы