Передача данных из View в контроллер в ASP.Net MVC - PullRequest
0 голосов
/ 22 апреля 2010

У меня есть словарь, который я передаю в View. Я хочу иметь возможность передавать значения этого словаря обратно в действие контроллера из этого же представления. Есть ли в любом случае это может быть достигнуто без использования формы? Ситуация такова, что мне нужно иметь возможность передать их обратно в действие контроллера, которое вызывается, когда пользователь щелкает ActionLink из представления, и, по моему опыту, ActionLink не может использоваться для отправки значений формы, т.е. Вы смогли отправить значения формы только с помощью кнопки отправки формы. Если не существует способа использовать ActionLink для отправки значений в форме.

Действие контроллера передает словарь в контроллер в ViewData:

public ActionResult ModifyNewCrossListing(FormCollection form)
        {
            Dictionary<int, string> prefixlist = new Dictionary<int, String>();
            ViewDatap["prefixList"] = prefixlist;
        }

Просмотр распечатывает содержимое словаря, ActionLink вызывает другое действие контроллера, где я хочу получить доступ к словарю:

<%int i = 0;
      if ((ViewData["prefixList"] as Dictionary<int, string>).Count >= 1)
      {
          foreach (var cp in (ViewData["prefixList"] as Dictionary<int, string>))
          {
              if (cp.Value == (ViewData["prefixList"] as Dictionary<int, string>).Last().Value)
              {%>
                  <%= Html.Encode(cp.Value)%>
              <%}
              else
              {%>
                  <%= Html.Encode(cp.Value)%> -
            <%}
          } 
      } %> 

<%=Html.ActionLink("View All Criteria", "ShowAllCriteria", new { prefixList = ViewData["prefixList"] as Dictionary<int, string> })%>)

И, наконец, в моем новом действии контроллера я хочу получить доступ к словарю

public ActionResult ShowAllCriteria(Dictionary<int, string> prefixList)
        {
          //Do stuff
        }

1 Ответ

1 голос
/ 22 апреля 2010

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

...