首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建通用ActionResult

创建通用ActionResult
EN

Stack Overflow用户
提问于 2012-04-19 11:45:31
回答 1查看 278关注 0票数 5

我的控制器中有以下内容;

代码语言:javascript
复制
    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,它获取参数并对它们做一些事情;

代码语言:javascript
复制
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {

我希望能够去掉Post ActionResult,在一个基本控制器中有一个单独的。

这有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-19 15:30:54

你可以这样做:在你的(基本)控制器中添加:

代码语言:javascript
复制
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;
    }

这将尝试检查是否存在未定义的方法的视图。我认为你可以从这里自己扩展,以满足你的需要。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10221379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档