我如何通过html.actionlink
或使用除表单提交之外的任何其他方法传递整个模型?有什么方法或提示吗?
问问题
20184 次
3 回答
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?Search=routing&Category=mvc&Page=23
这将是你的行动,
public ViewResult SearchAction(QueryViewModel query)
{
...
}
于 2012-07-22T14:10:38.837 回答
4
不,您不能通过链接或表单传递整个复杂对象。您可以采取几种可能的方法:
- 将对象的每个单独属性包括为查询字符串参数(或输入字段,如果您使用的是表单),以便默认模型绑定器能够在控制器操作中重建对象
- 仅传递一个 id 作为查询字符串参数(或输入字段,如果您使用的是表单)并让控制器操作使用此 id 从某个数据存储中检索实际对象
- 使用会话
于 2012-07-22T06:50:56.133 回答
1
您可以使用 javascript 来检测对链接的点击,序列化表单(或您想要传递的任何数据)并将其附加到您的请求参数中。这应该实现您想要实现的目标......
于 2012-07-22T06:57:28.330 回答