【发布时间】:2016-06-23 16:49:50
【问题描述】:
我有一个Filter 类型:
public class Filter
{
public int FilterId { get; set; }
public ICollection<int> ModuleIds { get; set; }
}
我需要重定向到操作并传递这种类型的实例:
public ActionResult Navigate
{
var filter = new Filter()
{
FilterId = 5,
ModuleIds = new List<int>() { 6 };
}
return RedirectToAction("list", "user", filter);
}
这是目标操作:
public ActionResult List(Filter filter)
{
var filterId = filter.FilterId; // = 5
// but filter.ModuleIds.Count = 0
}
结果我得到了空filter.ModuleIds。因此,只有引用类型存在问题。
如何在不使用TempData 的情况下传递所有引用属性的filter?
我也尝试使用但没有结果
return RedirectToAction("list", "user", new RouteValueDictionary(filter);
和
return RedirectToAction"list", "user", new { filter = filter} );
【问题讨论】:
-
你不能传递引用类型。一种解决方法是将值保存在 Session/TempData 或将
filter对象序列化为 json,这将使其成为值类型。
标签: c# asp.net .net asp.net-mvc redirect