Как передать всю модель через html.actionlink
или с помощью любого другого метода, кроме отправки формы? Есть ли способ или советы для этого?
Есть ли способ передать всю модель через html.actionlink в ASP.NET MVC 3?
Ответ 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 поиск = маршрутизация и амп;? Категория = & MVC; Page = 23
Здесь будет ваше действие,
public ViewResult SearchAction(QueryViewModel query)
{
...
}
Ответ 2
Нет, вы не можете передавать целые объекты со ссылками или формами. У вас есть несколько возможных подходов, которые вы могли бы предпринять:
- Включить каждое индивидуальное свойство объекта в качестве параметров строки запроса (или полей ввода, если вы используете форму), чтобы связующее устройство по умолчанию могло восстановить объект обратно в действии контроллера.
- Передайте только идентификатор в качестве параметра строки запроса (или поля ввода, если вы используете форму), и чтобы действие контроллера использовало этот идентификатор для извлечения фактического объекта из некоторого хранилища данных.
- Использовать сеанс
Ответ 3
Вы можете использовать javascript для обнаружения щелчка по ссылке, сериализации формы (или любых данных, которые вы хотите передать) и добавления ее к вашим параметрам запроса. Это должно достичь того, чего вы хотите достичь...