如何在 post 方法中获取实际控制器
本文关键字:获取 控制器 方法 post | 更新日期: 2023-09-27 18:31:20
我有两个控制器Project和Tag,它们都有一个创建视图和获取发布方法。
在项目创建视图中,我可以选择添加一个标签,该标签会打开一个带有标签创建视图的对话框。
当我添加标签时,它会转到标签控制器创建 post 方法,此时我希望能够获得将其发送到那里的控制器操作(在本例中为 Project)。我看过 UrlReferer 类,有没有比这更好的方法来获取控制器?
我需要这个的原因是我希望能够做类似的事情
if (Request.IsAjaxRequest())
{
if (REFERER CONTROLLER != Tag Controller)
{
return Json(new { Item = item, Success = true });
}
else
{
return RedirectToAction("Index");
}
}
所以基本上如果对话框在另一个控制器中,则返回新值的 JSON,否则返回索引操作
编辑最终再次使用了这个想法。
if (Url.IsLocalUrl(Request.UrlReferrer.AbsoluteUri) && !String.Equals(Request.UrlReferrer.LocalPath.TrimEnd('/'), Url.Action("Index"), StringComparison.OrdinalIgnoreCase))
{
return Json(new { Item = item, Success = true, Field = String.Format("#Selected{0}s", ControllerName) });
}
return Json(new { Success = true, Field = "#mainContent", Url = Url.Action("Index") });
您有几个选择:
- 您可以查看引用 URL(获取引用 URL 字符串、解析控制器名称然后创建控制器类的实例是没有意义的,除非您需要访问类中的某种方法或属性;我只会看字符串)。
- 您可以包含包含控制器名称的隐藏输入。
- 您可以在会话中存储一个值(这似乎有点矫枉过正;请记住,将为此创建一个cookie)以记住用户来自哪个页面。
在服务器收到值之前,选项 1 和 2 可能会被篡改。