Подтвердить что ты не робот

Есть ли способ передать всю модель через html.actionlink в ASP.NET MVC 3?

Как передать всю модель через html.actionlink или с помощью любого другого метода, кроме отправки формы? Есть ли способ или советы для этого?

4b9b3361

Ответ 1

Хотя это не рекомендуется в сложных случаях, вы все равно можете это сделать!

public class QueryViewModel
{
  public string Search { get; set; }
  public string Category { get; set; }
  public int Page { get; set; }
}

// just for testing
@{
   var queryViewModel = new QueryViewModel
   {
      Search = "routing",
      Category = "mvc",
      Page = 23
   };
}

@Html.ActionLink("Looking for something", "SearchAction", "SearchController"
                  queryViewModel, null);

Это приведет к созданию ссылки действия с href, как это,

/SearchController/SearchAction поиск = маршрутизация и амп;? Категория = &amp MVC; Page = 23

Здесь будет ваше действие,

public ViewResult SearchAction(QueryViewModel query)
{
   ...
}

Ответ 2

Нет, вы не можете передавать целые объекты со ссылками или формами. У вас есть несколько возможных подходов, которые вы могли бы предпринять:

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

Ответ 3

Вы можете использовать javascript для обнаружения щелчка по ссылке, сериализации формы (или любых данных, которые вы хотите передать) и добавления ее к вашим параметрам запроса. Это должно достичь того, чего вы хотите достичь...