有没有办法通过ASP.NET MVC 3中的html.actionlink传递整个模型?

时间:2012-07-22 06:27:14

标签: asp.net-mvc-3

如何通过html.actionlink或使用除表单提交之外的任何其他方法传递整个模型?它有什么办法或提示吗?

3 个答案:

答案 0 :(得分:18)

虽然在复杂的情况下不可取,但你仍然可以这样做!

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&安培;页= 23

这将是您的行动,

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

答案 1 :(得分:4)

不,您无法使用链接或表单传递整个复杂对象。您可以采取几种可能的方法:

  • 将对象的每个单独属性包含为查询字符串参数(如果使用表单,则输入字段),以便默认模型绑定器能够在控制器操作中重新构建对象
  • 只传递一个id作为查询字符串参数(如果使用表单,则输入字段)并让控制器操作使用此id从某些数据存储中检索实际对象
  • 使用会话

答案 2 :(得分:1)

您可以使用javascript检测链接上的点击,序列化表单(或您要传递的任何数据)并将其附加到您的请求参数。这应该达到你想要实现的目标......

相关问题