Привязка в контроллере с префиксом нескольких равных - PullRequest
0 голосов
/ 20 мая 2011

У меня есть одна форма в моем проекте (MVC3 C # с бритвой), и это часть кода (есть несколько кнопок типа отправки):

@foreach(Communication mail in Model.connectionToEdit.Comunications.Where(co => !co.Deleted && co.IdComunicationType == 4)) {
                   if(mail.IdComunication != 0) {
                   <input type="hidden" name="mailEdit.Hash" value="@mail.Hash" />
                   <input type="hidden" name="mailEdit.IdComunication" value = "@mail.IdComunication" />
                   <input type="hidden" name="mailEdit.IdComunicationType" value="4" />
                   <input type="email" name="mailEdit.Value" value="@mail.Value" />
                   <button type="submit" name="editmail" value="@mail.Hash" >edit</button>     
               }
               else {
                    @Html.Partial("_communication", mail)<button type="submit" name="removemail" value="@mail.Hash">remove</button>                 
               }
            }

И в моем контроллере, яесть метод действия, который обрабатывает форму следующим образом:

[HttpPost] 
        public ActionResult ProcessEditForm(FormCollection form, 
                                              [Bind(Prefix = "mail")] Communication mail,
                                              [Bind(Prefix = "mailEdit")] Communication mailEdit,
                                              [Bind(Prefix = "phone")] Communication phone,
                                              [Bind(Prefix = "location")] Location location,
                                              [Bind(Prefix = "keyword")] Keyword keyword,
                                              [Bind(Prefix = "tag")] Keyword tag,
                                              [Bind(Prefix = "note")] Note note,
                                              [Bind(Prefix = "web")] WebProfile web,
                                              [Bind(Prefix = "connection")] Connection connection){

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

1 Ответ

0 голосов
/ 20 мая 2011

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

Я бы реструктурировал ваш контроллер / представления, и вместо использования нескольких кнопок отправки я бы использовал ссылки действий, которые ссылаются на другие действия в контроллере, например редактировать, сохранять и т. д.

Поскольку вы перебираете почтовые объекты, вы можете создать ссылку действия и использовать свойство Hash в качестве параметра действия.

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