我的控制器中有以下内容;
public ActionResult CocktailLoungeBarAttendant()
{
return View();
}
[HttpPost]
public ActionResult cocktailLoungebarattendant(string name, string email, string phone)
{
return View();
}
public ActionResult merchandisecoordinator()
{
return View();
}
[HttpPost]
public ActionResult merchandisecoordinator(string name, string email, string phone)
{
return View();
}
这只发生了4次,但是我错误地认为我的代码重复了4次。
然后我有一个BaseController然后抓取参数并用它们做东西;
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
我希望能够取消发布ActionResult
并在基本控制器中使用一个。
这甚至可能吗?
答案 0 :(得分:3)
你能做的是: 在你的(基本)控制器中添加:
protected override void HandleUnknownAction(string actionName)
{
var controllerName = GetControllerName();
var name = GetViewName(ControllerContext, string.Format("~/Views/{0}/{1}.cshtml",controllerName, actionName));
if (name != null)
{
var result = new ViewResult
{
ViewName = name
};
result.ExecuteResult(ControllerContext);
}
else
base.HandleUnknownAction(actionName);
}
protected string GetViewName(ControllerContext context, params string[] names)
{
foreach (var name in names)
{
var result = ViewEngines.Engines.FindView(ControllerContext, name, null);
if (result.View != null)
return name;
}
return null;
}
这将尝试检查未定义的方法是否存在视图。我想你可以自己从这里扩展它以满足你的需求。