我在“CartController”上有一个名为AddtoCart的操作方法,返回一个ActionResult。我的问题是,我从另一个控制器向AddtoCart提交要添加的产品的Id,然后继续执行。我没有验证的问题;然而,当!ModelState.IsValid时,我想重定向到调用该Action的视图,但我不知道是谁调用了我(或在哪里找到它)。可能有几个不同的控制器会向该方法提交。在ViewData中是否有我可以使用的东西来查找调用我的Action方法的人?
Request.UrlReferrer
如果你不确定,请告诉我。
祝好,
Charles
我认为控制器不会进行发布。控制器接受请求(发布)并处理一些工作,检索数据,然后选择要呈现回浏览器的视图。
因此,您的操作方法通常是从Web浏览器(页面上的链接,JavaScript)调用的。这就是为什么我建议您向Action方法传递附加参数,然后基于该值选择适当的视图进行呈现。
public ActionResult AddToCart(int productID, string caller)
{
//add to cart logic
switch (caller)
{
case "this":
{
//get data for this view
return View("this");
}
case "that":
{
//get data for that view
return View("that");
}
default:
{
//get data for default view
return View("default");
}
}
}
[...] 如果你不介意将你的代码绑定到特定的视图引擎上,你可以查看ViewContext.View属性并将其转换为WebFormView
var viewPath = ((WebFormView)ViewContext.View).ViewPath;
从一个关于如何在控制器方法内获取视图名称的相关问题中。