我的控制器中有以下内容;
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)
{我希望能够去掉Post ActionResult,在一个基本控制器中有一个单独的。
这有可能吗?
发布于 2012-04-19 15:30:54
你可以这样做:在你的(基本)控制器中添加:
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;
}这将尝试检查是否存在未定义的方法的视图。我认为你可以从这里自己扩展,以满足你的需要。
https://stackoverflow.com/questions/10221379
复制相似问题