问题标签 [onactionexecuted]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
115 浏览

asp.net-mvc-2 - 将内容访问逻辑放在 BaseController 中是个好主意吗?

我正在开发一个 ASP.NET MVC 应用程序,其中任何页面的内容都可以从数据库中提取(如果存在)并显示在页面上。

这是为了使非技术人员能够编辑内容而无需进入源代码(例如视图)并进行更改。

我这样做的方式是,每个控制器都派生自一个基本控制器。基本控制器重载“OnActionExecuted”并借此机会提取分配给当前动作/控制器的任何内容。

如果操作返回派生自“ContentViewModel”的 ViewModel,它会使用数据库中的文本填充 ViewModel 的“Text”属性。

然后文本由视图呈现。

你能看出这个设计有什么弱点吗?

如果我有用于提取内容的 HtmlHelper 扩展而不是基本控制器,那会更好吗?我从视图中调用它?

我问这个的一个原因是,拥有我自己的基本控制器似乎会干扰调用“Html.RenderAction”,这似乎期望指定的控制器直接从“System.Web.Mvc.Controller”继承。

0 投票
0 回答
1075 浏览

asp.net-mvc - 事务过滤器异常处理 ASP.NET MVC

我在一个项目中使用 S#arp Architecture,它带有 Controller 方法的 [Transaction] 属性。这样,Transaction Commit 被称为 OnActionExecuted 过滤器,这意味着它在退出 Controller 方法范围后发生。我的问题是在提交期间发生异常时会发生什么?

从S#arp源码中可以看到TransactionAttribute.cs中的如下代码

例如,如果用户尝试在存在外键约束(并且数据错误)的情况下提交保存,则提交将产生未处理的数据库异常。与其将用户转储到通用错误页面(类似于 [HandleError] 构造),我更愿意将它们直接返回到它们所在的位置,以便他们可以纠正问题。如果我在 Controller 方法的范围内显式地执行事务,我可以这样做。我不能,因为作为后过滤器,它超出了范围。

我想看看其他人在这种情况下会怎么做。

0 投票
1 回答
1685 浏览

asp.net-mvc - 覆盖 OnActionExecuted 并获得奇怪的 IIS 响应

所以,

我在 IIS 6 上有一个 MVC 2 站点(通配符应用程序映射/aspnet_isapi.dll hack),我们希望根据他们的首选位置将人们引导到不同的 URL,比如说 la.acme.com 与 nyc.acme.com。

我不希望任何人最终访问 www.acme.com 或 acme.com。

为了做到这一点,我正在做以下事情(我承认这可能不是最好的方法,这就是我问这个问题的原因):

在我的基本控制器中,我正在执行以下操作:

这是上面冗长代码的摘要OnActionExecuted

  1. 如果用户在我们将允许 www.acme.com 或 acme.com(如 PrivacyPolicy)的“操作”上,那么不要再费心了;

  2. 如果 url 包含“www”或者它不包含城市前缀,那么让我们继续,因为我们需要修复这种情况;

  3. 如果他们有指定首选城市的 cookie (StoreLocationID),则重定向到 /Home/ChooseCity,我们将在其中设置其他 cookie 并重定向到正确的 URL:nyc.acme.com 或 la.acme.com。

  4. 如果他们已登录,并且如果他们的用户帐户列出了首选城市,则使用该城市(重定向到 /Home/ChooseCity - 与上面的 3 相同)

  5. 他们没有 cookie,也没有存储在用户帐户中,所以使用他们的 IP 获取 zip 并查看 zip 是否在我们覆盖的城市内或周围,如果是,请发送到 /Home/ChooseCity,如上面 3 和 4

  6. 最后,如果我们无法确定他们喜欢哪个城市,我们让他们在 /Home/ChooseLocation/ 手动选择

这一切都有效。但是,我们开始随机注意到以下内容......

有时(并且没有看似模式)用户会点击一个链接并最终进入一个完全随机的页面(不是点击链接的目的地)。看起来他们最终到达的位置通常是另一个用户(分开的城市)可能一直在请求的位置(我知道你正在考虑量子纠缠,但我已经排除了这一点)。就好像 IIS 对谁要求什么感到困惑。

我的问题(毕竟)是我上面的逻辑(in OnActionExecuted)会导致 IIS 出错吗?应该注意的是,即使对于 URL 中带有 nyc 或 la 的用户,也会出现“随机位置”问题......拥有正确 storelocation cookie 的用户。这意味着用户不应该被重定向到“/Home/ChooseCity”或“/Home/ChooseLocation”,因为他们已经正确配置了 URL 和 cookie。

0 投票
2 回答
3230 浏览

asp.net-mvc-3 - MVC 模型在 OnExecuted 操作过滤器中为空......或者设置模型的更优雅的方式?

我有一个 ActionFilter,它覆盖了 OnActionExecuted 方法。filterContext.Controller.ViewData.Model 在 POST 操作中始终为空。我确实发现以下文章似乎在说它不应该为空,但这一定是 MVC 的早期版本。这是MVC3。我应该得到什么?

ActionFilter 中的模型可用性

更新:

我已经找到了原始问题的答案。我有一个自定义 ActionResult,它使用自定义日期格式化程序输出 JSON。问题是模型没有在控制器中设置。

在我的自定义 ActionResult 中,ExecuteResult 方法通过了 ControllerContext,如果我可以在那里设置模型,那就太好了:

但这是周期的后期,结果在 ActionFilter 中仍然为空。这似乎意味着我需要在控制器中手动设置模型:

或者

这意味着我每次使用此自定义 ActionResult 时都需要记住执行此操作。有没有更优雅的方式?

另一个更新:

我找到了一种方法来做到这一点,它并不像我希望的那样优雅。

在我在控制器中发送的 comstom ActionResult 的构造函数中,至少它会始终保持一致:

0 投票
1 回答
1035 浏览

c# - 跳过 OnActionExecuted 执行

我制作了一个实现了 OnActionExecuted 方法的 ActionFilterAttribute。这意味着,它在 Action 方法之后运行。但是,在某些情况下,我希望 OnActionExecuted 不被执行。

我如何从 Action 方法中阻止 ActionFilter 被执行?

现在,我做了这个:

关于 Action 方法:

在 ActionFilter.OnActionExecuted() 上:

但我认为这可能存在一种更优雅的方法。

0 投票
4 回答
8847 浏览

asp.net-mvc - OnActionExecuted 在 Web API 中被调用两次

在我的控制器完成 OnActionExecuted 的操作后,我正在尝试做一些事情。但是,该方法被调用了两次。

我的过滤方法

和我的控制器

当我尝试这个过滤器时,onActionExecuted 方法被调用两次,这导致我在方法中的操作被两次应用于响应。我已经搜索了一个原因,但找不到解决方案。

有任何想法吗?

0 投票
2 回答
694 浏览

c# - WebAPI Temporarily Override JsonFormatter from OnActionExecuted

I'm trying to create an attribute that will serialize data return from an action differently

This is the JsonFormatterRules incase anyone wanted to see them.

How can I Set the Content From On Action Executed? I cannot change the default serializer to the DefaultContract Globally because it could threading issues.

Also I'd prefer not to have to create a new response and copy over the Headers from the old one that seems like over kill.

0 投票
0 回答
32 浏览

java - Prime faces 5.2 结果/动作在jsf页面加载时执行

这是我的第一个 PrimeFaces 项目,我使用的是 Primefaces 5.2。我在我的列表页面 roleList.xhtml 中放置了一些表单/操作,例如:

我的回豆方法为:

如前面的代码所示,xhtml 将生成一个按钮,用于调用支持 bean 的 createRole() 方法来创建角色,然后导航到 roleEdit.xhtml。但不幸的是,每次我访问或刷新 roleList.xhtml 时。调用 backing bean 方法来创建一个新的角色对象,这意味着执行表单/动作时无需按下按钮来触发 backing bean 动作,但 UI 仍保留在 roleList.xhtml 中。

有没有人在 PrimeFaces 开发方面有更多经验,请指出我在做什么错?

编辑:此页面也将加载 template.xhtml。当我使用链接/结果调用其他页面中的其他支持方法时,它再次发生:

我的问题是:如何防止链接/按钮在页面加载时不自动触发?

新增 我的应用服务器是Weblogic 12cR2。我已经看到了 BalusC 对类似问题的回答。在我的情况下它不起作用,我不知道为什么。请提供更多解释为什么在页面加载时执行链接/按钮,以及如何防止它一次又一次地发生?

0 投票
1 回答
1764 浏览

c# - RazorEngine 在 cshtml 中动态添加

我在 nopcommerce 中创建插件时使用 RazorEngine 时遇到问题。
我在 OnActionExecuted 中的源代码是:

但是在编译和运行时,我遇到了这个错误:

RazorEngine.Templating.TemplateCompilationException: '编译模板时出错。请尝试以下方法来解决这种情况: * 如果问题与缺少/无效引用或多个定义有关,请尝试手动加载缺少的引用(在编译的 appdomain 中!)或通过提供您自己的 IReferenceResolver 实现来手动指定您的引用。请参阅https://antaris.github.io/RazorEngine/ReferenceResolver.html详情。目前,所有参考资料都必须以文件形式提供!* 如果你得到'class'不包含'member'的定义:尝试另一个modelType(例如'null'使模型动态)。注意:您不能使用 typeof(dynamic) 使模型动态化!或者尝试使用静态而不是匿名/动态类型。有关错误的更多详细信息: - error: (36, 79) Too many characters in character literal 编译的临时文件位于(请删除文件夹):C:\Users\Chegini.h\AppData\Local\Temp \RazorEngine_tfr2i1nu.3fl 我们尝试编译的模板是: ------------- START ----------- @using Nop.Plugin.Misc.NchShamsiDate.Extensions; @使用 Nop.Web.Framework.ViewEngines.Razor;

@T('Account.Fields.DateOfBirth'):

如果可能的话,请给我建议!

0 投票
1 回答
231 浏览

asp.net-web-api - 即使从 OnActionExecuting 返回响应,也会触发 OnActionExecuted

ActionFilter为 web apis 实现了以下属性:

  1. LogRequest:这会在方法中记录请求和响应OnActionExecuted

  2. ValidateModel:这将验证模型并BadRequest通过设置ResponseOnActionExecuting` 方法返回。

现在的问题是 - 我们BadRequest(从ValidateModel属性)返回的请求没有被记录,因为OnActionExecutedLogRequest属性)没有被触发。

有什么办法可以OnActionExecuted故意开火吗?