Asp.net MVC RedirectToAction()有没有办法将对象传递给目标操作?
当代码跳转到CreateProduct()时,填充的catList总是Count=0,因此我认为它不会被交付。 考虑到RouteValueDictionary不能做到这一点?还有别的办法吗Asp.net MVC RedirectToAction()有没有办法将对象传递给目标操作?,asp.net,asp.net-mvc,asp.net-mvc-3,Asp.net,Asp.net Mvc,Asp.net Mvc 3,当代码跳转到CreateProduct()时,填充的catList总是Count=0,因此我认为它不会被交付。 考虑到RouteValueDictionary不能做到这一点?还有别的办法吗 public ActionResult GetCats(int CatID) { List<Category> catList = new List<Category>(); if (CatID >= 0 )
public ActionResult GetCats(int CatID)
{
List<Category> catList = new List<Category>();
if (CatID >= 0 )
{
catList = context.Categories.Where(x => x.PCATID == CatID).ToList();
}
return RedirectToAction("CreateProduct", "Admin", new { catList });
}
public ActionResult CreateProduct(List<Category> catList) { }
public ActionResult GetCats(int-CatID)
{
List catList=新列表();
如果(CatID>=0)
{
catList=context.Categories.Where(x=>x.PCATID==CatID.ToList();
}
返回RedirectToAction(“CreateProduct”、“Admin”、新的{catList});
}
public ActionResult CreateProduct(列表catList){}
只需将带有要重定向到的URL的代码返回到浏览器。当这种情况发生时,浏览器将使用该URL执行GET
您的RouteValue需要简单。使用路由值无法真正传递复杂的对象或集合。您可以将所需的任何项目放置在
TempData
中,然后调用redirectoaction
如果您不关心浏览器url的更改,您可以
返回CreateProduct(catList
)您实际上正在尝试使用控制器进行数据访问
将“GetCats”数据检索移动到您的业务层(服务对象、存储库,任何适合您的)
然后,CreateProduct需要出现两次(2个签名)。一个没有参数,您将在其中从业务层调用“GetCats”并将其发送到视图
另一个实现将用HttpPostAttribute标记,并将在参数中包含创建cat所需的所有信息
就这些。简单易用。我同意返回视图或部分视图,而不是重定向到操作。过度使用时呈现操作和重定向到操作可能会影响应用程序性能。