controller_action_predispatch_che
全部标签 现有项目的Controller继承自:Controller:RouteTable.Routes.MapRoutewith"{controller}/{action}/{id}"。ApiController:GlobalConfiguration.Configure并在回调MapRoute中使用"api/{controller}/{id}"。一切正常,但我需要为这两种类型的Controller中的操作方法生成URL。鉴于:继承自其中任何一个的Controller的名称或类型,以及一个Action方法名那么从网站端,如何为WebAPI端生成正确的URL?我现在正在使用反射来获取操作和Con
所以我开始了一个ASP.NETMVC项目,虽然整体体验不错,但我对我的Controller变得一团糟感到不太满意。我在网上四处看看(CodeCampServer等),它们似乎都遇到了同样的问题,其中Controller方法非常一致地违反了SRP(单一责任原则)——例如,如果请求是,Controller方法只呈现ViewGET但如果是POST则更新model。现在我有Controller方法负责整个应用程序中的多个逻辑路由-假设它检查在表单上单击了哪个button并相应地执行操作。我可以使用JavaScript将每个按钮点击重定向到不同的表单操作,但也感觉不对...另一个大问题是魔法字符
请随意质疑我的理智。我需要确定一个Action对比Action是原始实例。我拥有的是一个带有类变量的类protectedActionMessageCallback=null;当我的abstractclassMessage是通过抽象方法创建的,我强制“他们”初始化MessageCallBack。此MessageCallback被添加到IList>.此列表中定义的每个操作都可以不同。现在,我想要做的是从列表中删除一个特定的操作,但我尝试比较它时失败了。以下是我最后一次尝试设置的示例:publicvoidUnsubscribe(ActionmessageCallback){varmessag
我正在编写一个使用ActionFilterAttribute的Action过滤器(继承自HttpClient)将数据发布到OnResultExecuted中的外部服务器方法。HttpClient有方法PostAsync它返回一个可等待的Task.publicoverridevoidOnResultExecuted(ResultExecutedContextfilterContext){using(varclient=newHttpClient()){vartask=client.PostAsync(GetUri(),GetContent());varresult=task.Result
我正在使用旧版MainMenucontrol(withMenuItems)controlinanapplication,andwouldliketoimplementzoominandzoomoutmenuitems(withControl++和Control+-键盘快捷键)。(请注意,我使用的是MainMenu而不是MenuStrip)。MenuItem确实有一个Shortcut属性,类型Shortcut,但它没有CtrlPlus选项。我决定看看如何Shortcutwasimplementedinthereferencesource,看起来每个枚举值只是几个Keys的组合枚举值(例如
在给定System.Web.Routing.RouteData的情况下,如何获取将要调用的Controller操作(方法)和Controller类型?我的场景是这样的-我希望能够在OnActionExecuting方法中执行(或不执行)某个操作的某些操作。但是,我经常想知道的不是当前操作,而是被调用的“根”操作;我的意思是我可能有一个名为“登录”的View,这是我的登录页面。此View可能包括另一个局部View“LeftNav”。当为LeftNav调用OnActionExecuting时,我希望能够确定它确实是为Login的“根”aciton调用的。我意识到通过调用RouteTable
是否可以在Controller中使用泛型方法?我在谈论这样的事情:[HttpPost]publicvoidDoSomething([FromBody]SomeGenericClasssomeGenericObject){SomePrivateMethod(someGenericObject);}我实际上已经尝试了上面的方法(尽管所有的名称都不同)并发布到Api//DoSomething使用someGenericObject的实例在请求正文中,它没有工作(即它没有到达Controller)。我猜测WebAPI路由无法解析泛型方法,因为它们可能会导致下面不同类型的不同方法。但这正是我的想法
我试图在内存中保存Action类型的引用集合其中T是变量类型我找到了dynamic的解决方案但我不想使用动态解决方案publicclassMessageSubscriptor:IMessageSubscriptorPool{Dictionary>Callbacks=newDictionary>();publicvoidSubscribe(Actioncallback)whereT:IMessage{Callbacks.Add(typeof(T),(obj)=>callback(obj));}}有谁知道处理这个问题的更好方法吗?提前致谢。 最佳答案
所以我的问题如下(MVC5):我有几种类型的默认页面,我想在我的应用程序启动时启动。1-匿名用户2...5-对于自动记录的其他用户角色(cookie)。所以这几乎是一个简单的“如果”,我知道,但与此同时我正在使用不能在RouteConfig.csUser.IsInRole("RoleName")方法/strong>.如果只是简单地添加一个Using语句,我提前为问题的简单性道歉。更新:我已经通过一些方法做到了:if(User.UserInRole("RoleName")在我的默认ActionResault中返回RedirectToAction("ActionName")。虽然这不是一个
我一直在玩新的WebAPI2(顺便说一句,它看起来很有前途),但我有点头疼要让一些路由正常工作。当我有GetAllUsers/GetUser(intid)时一切正常,但是当我添加GetUserByName(stringname)和/或GetUserByUsername(stringusername)时,事情开始变得令人毛骨悚然。我知道int将是第一个,我可以重新排序路由,但让我们想象一下以下场景:用户可以有一个有效的username=1234或name=1234(我知道这不太可能,但我们需要防止任何可能的情况)并且我们可能有一个有效的1234数据库中的ID和所有路由将混淆。也许这是我们