C# 重定向到操作并传递引用类型

C# 重定向到操作并传递引用类型,c#,asp.net,.net,asp.net-mvc,redirect,C#,Asp.net,.net,Asp.net Mvc,Redirect,我有一个过滤器类型: public class Filter { public int FilterId { get; set; } public ICollection<int> ModuleIds { get; set; } } 结果我得到了空的filter.ModuleIds。因此,只有引用类型存在问题 在不使用TempData的情况下,如何通过所有引用属性的filter 我也尝试过使用,但没有结果 return RedirectToAction("list",

我有一个
过滤器
类型:

public class Filter 
{
   public int FilterId { get; set; }
   public ICollection<int> ModuleIds { get; set; }
}
结果我得到了空的
filter.ModuleIds
。因此,只有引用类型存在问题

在不使用
TempData
的情况下,如何通过所有引用属性的
filter

我也尝试过使用,但没有结果

return RedirectToAction("list", "user", new RouteValueDictionary(filter);


无法传递引用类型。原因是
RedirectToAction
不会序列化数据,它只是在route values对象中的属性上进行迭代,构建一个查询字符串,其中键是属性名称,值是属性值的字符串表示形式。如果您想更改
Url
,那么使用
TempData
可能是最简单的方法。

您不能传递引用类型。解决方法是将值保存在Session/TempData中,或者将
过滤器
对象序列化为json,这将使其成为值类型。谢谢您的回答。如果无法传递对象,我将使用会话
public ActionResult List(Filter filter) 
{
  var filterId = filter.FilterId; // = 5
  // but filter.ModuleIds.Count = 0 
}
return RedirectToAction("list", "user", new RouteValueDictionary(filter);
return RedirectToAction"list", "user", new { filter = filter} );