在 OnException(ExceptionContext filterContext) 内部时,有什么方法可以恢复传递给 POST 操作的模型吗?

2023-11-24

情况是这样的:

我找不到获得的方法viewModel已传递给 POST 操作方法。

[HttpPost]
public ActionResult Edit(SomeCoolModel viewModel)
{
    // Some Exception happens here during the action execution...
}

在可重写的内部OnException对于控制器:

protected override void OnException(ExceptionContext filterContext)
{
    ...

    filterContext.Result = new ViewResult
    {
        ViewName = filterContext.RouteData.Values["action"].ToString(),
        TempData = filterContext.Controller.TempData,
        ViewData = filterContext.Controller.ViewData
    };
}

调试代码时filterContext.Controller.ViewData is null因为代码执行时发生异常并且没有返回视图。

无论如何我看到了filterContext.Controller.ViewData.ModelState已填满并具有我需要的所有值,但我没有完整的值ViewData => viewModel对象可用。 :(

我想返回相同的View与发布的data/ViewModel返回给用户一个中心点。希望你明白我的意思。

我还有其他途径可以实现目标吗?


您可以创建一个继承自的自定义模型绑定器默认模型绑定器并将模型分配给TempData:

public class MyCustomerBinder : DefaultModelBinder
{
    protected override void OnModelUpdated(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        base.OnModelUpdated(controllerContext, bindingContext);

        controllerContext.Controller.TempData["model"] = bindingContext.Model;
    }
}

并将其注册到Global.asax:

ModelBinders.Binders.DefaultBinder = new MyCustomerBinder();

然后访问它:

protected override void OnException(ExceptionContext filterContext)
{
    var model = filterContext.Controller.TempData["model"];

    ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 OnException(ExceptionContext filterContext) 内部时,有什么方法可以恢复传递给 POST 操作的模型吗? 的相关文章

  • 在ConfigureServices中注入依赖

    在我的 ASP Net Core 应用程序中 我需要在以下位置注入一些依赖项 在我的例子中是一个存储库 ConfigureServices method 问题是该方法不允许使用多个参数来注入依赖项 该怎么办呢 这是我的代码 public v
  • 如何在 ASP.NET MVC 中手动设置用户角色?

    我正在从事的这个项目要求我保留管理员用户的本地数据库 并为普通用户使用外部数据库 在管理数据库中通过身份验证的任何人都应被分配 管理员 角色 而通过其他数据库进行身份验证的任何人将始终被分配 用户 角色 我可以手动分配这些角色吗 我不需要角
  • 从mvc url中隐藏一个控制器名称,显示其他控制器名称

    我有两个控制器 HomeController 和 ResourcesController 当请求对 HomeController 执行操作时 我想从 url 中隐藏 Home 但对于 ResourcesController 或任何其他 co
  • C# SMTP 身份验证失败,但凭据正确

    这是我的问题 我编写了以下程序来测试是否可以发送电子邮件 class Program static void Main string args try Console WriteLine Mail To MailAddress to new
  • 服务具有零个应用程序(非基础设施)端点

    我最近创建了一个WCF服务 dll 和一个服务主机 exe 我知道我的 WCF 服务工作正常 因为我能够成功地将服务添加到 WcfTestClient 但是 当我从服务主机 exe 使用 WCF 时 我似乎遇到了问题 我可以将对 WCF d
  • Owin 声明 - 添加多个 ClaimTypes.Role

    我有一个应用程序 可以在其中为用户分配以下角色 超级管理员 Admin User 一个用户可能分配了两个或多个角色 例如 超级管理员和用户 我的应用程序使用声明 因此我也想通过声明来验证用户角色 喜欢 Authorize Roles Adm
  • 如何根据 ASP.NET VNEXT MVC6 中给出的路径进行虚拟路由/重定向?

    我有一个网站 它在不同的路径上公开多个 API 每个 API 由特定于应用程序部分的控制器处理 例如example com Api Controller Action param1 stuff 其中控制器发生变化 但操作保持相当一致 我有几
  • PostAsync 方法的 HttpClient 错误

    使用 HttpClient 对第 3 方 API 进行 PostAsync 调用时 当我执行 client PostAsync 时 我正好看到此错误 知道是什么原因造成的吗 Code public class JobController A
  • ASP.NET MVC 中 ModelState.AddModelError 中的关键参数有什么意义?

    我在我的控制器中添加了验证检查来修改ModelState如果验证失败 例如 private bool ValidateMoney string raw string name decimal min decimal max try var
  • asp.net mvc:将 RedirectToAction(string, object) 转换为 RedirectToAction(x => x.Detail(id))

    任何人都知道如何创建一个方法 我将把它放在扩展类中 该方法将仅使用表达式 无魔术字符串 与 mvc 的 RedirectToAction 执行相同的操作 所以不要写这样的东西 RedirectToAction Detail new Rout
  • ASP.NET MVC 应用程序中的工作单元模式

    我一直在看这个优秀的blog http www nhforge org wikis patternsandpractices nhibernate and the unit of work pattern aspx标题为 NHibernat
  • 构建 ViewModel 的合适粒度是多少?

    我正在开发一个新项目 在看到以前项目的一些困难后 这些项目没有提供足够的视图与模型的分离 特别是使用 MVC 模型和视图开始有点相互渗透 我想使用 MVVM 我了解基本概念 并且很高兴开始使用它 然而 有一件事我有点忽略 ViewModel
  • 使用实体框架重叠约会

    我将 asp net mvc 与实体框架一起使用 我有一个包含 startat 字段 endat 字段和 roomid 字段 称为 SpaceConfigurationId 的约会列表 并且希望查找给定房间已重复预订的约会列表 可以假设 e
  • MVC 模式中的验证层

    验证模型将使用的数据的最佳位置在哪里 例如 考虑登记表 我们有一些来自注册表的数据 那么验证这些数据的最佳位置在哪里 我们应该通过 if 语句或特殊的验证器类来检查每个数据 这意味着大量的编码 所以我想了解在哪里可以做到这一点 在控制器中
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • Android JUnit 测试中的运行时异常

    我有一个简单的 HelloWorld Activity 我尝试使用 Android JUnit 测试对其进行测试 应用程序本身按预期运行 但测试失败并显示 java lang RuntimeException 无法解析以下活动 Intent
  • “包含非 LDH ASCII 字符”异常从何而来?

    我开发了一个应用程序 spring magnolia 它在新年 2018 左右开始为我抛出这个异常 但不为任何其他同事抛出异常 例外是正确的 有一个 在配置的主机名中 因此域名应该是固定的 尽管如此 它之前一直在工作 对于其他人来说它仍然在
  • 第一次机会异常 - 在内存位置长?

    这是什么 我该如何处理 修复它 First chance exception at 0x756fb727 in Program exe Microsoft C exception long at memory location 0x0018
  • Ajax 表单从 Jquery 对话框内重定向页面

    我在部分视图中有一个 jquery 对话框 model JQueryDialogPoc Models FeedBack using Ajax BeginForm GiveFeedback Home null new AjaxOptions
  • Asp.net MVC 路由 - 防止通过约束路由到 XML 文件

    我正在尝试找到一种方法来阻止用户访问特定的 xml 文件 我尝试过做 routes MapRoute SiteMap SiteMap siteMap xml new new isLocal new LocalHostRouteConstra

随机推荐

  • 需要动态设置quartz cron表达式

    我在我的Web应用程序 Servlet Web应用程序 中使用quartz 下面是quartz property文件和quartz job xml的快照 石英性能 Configure the Job Initialization Plugi
  • .*(点星)如何工作? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我已经明白了 表示任何字符的零个或多个 但是 有人可以解释一下如何 在接下来的工作中又会
  • 允许“Enter”键按下提交按钮,而不是仅使用 MouseClick

    我现在正在学习 Swing 课程以及与之相关的一切 我已经编写了一个玩具程序 它会提示输入名称 然后显示一个带有消息 您已输入 您的名字 的 JOptionPane 我使用的提交按钮只能单击 但我也想让它与 Enter 按钮一起使用 我尝试
  • 在条件评估期间如何从查询返回布尔值?

    我需要这样的东西 select len someLongTextColumn 0 as isEmpty 上面的方法不行 有什么替代方案吗 如果转换为位 那么大多数客户端代码可以直接将其读取为布尔值 SQL Server没有布尔类型 SELE
  • SQL Server DRI(ON DELETE CASCADE)慢吗?

    我一直在分析我们的一个系统中与特别慢的删除操作相关的反复出现的 错误报告 性能问题 长话短说 看来CASCADE DELETE钥匙在很大程度上负有责任 我想知道 a 这是否有意义 以及 b 为什么会这样 我们有一个小部件的模式 这些小部件位
  • 增强精神3在哪里?是被遗弃了吗?

    我找不到boost Spirit 3的任何下载 好像12月底官网就不说了 它去哪儿了 源代码可在Github 文档是here 引用自Blog C Now 2015 今天是 Spirit X3 的正式发布 又名 Spirit 3 0 0 X3
  • 操作栏菜单显示在屏幕外

    我有一个带有旧式菜单的应用程序 将主题更改为 Holo 并将目标 SDK 版本切换为 14 后 软菜单按钮消失了 没关系 但使用操作栏上的菜单按钮会显示文本菜单大部分在屏幕外 如所附图片所示 您有什么想法如何解决这个问题吗 我已经解决了这个
  • 如何在没有服务或线程预览的情况下进行相机捕获?

    是否可以在不显示相机预览的情况下捕获图像 我有一个要求 我应该能够从线程或服务捕获图像 而不干扰前台应用程序 因为我不想显示相机预览 但我仍然想捕获背景图像并将其存储在设备中 试试这个代码 活动启动时它将单击图片 它有预览 但预览大小设置为
  • 房间:在查询中使用变量

    我在我的应用程序中使用 Room DB 并且希望在查询中将列名称作为变量 以便我可以 随时随地 操作它 在调用方法时 示例代码 name 假设是代表一列的变量 Query UPDATE Products SET name value WHE
  • 如何让 Pip 尊重要求?

    如果我使用创建 setup pyrequires Pip 没有安装我的依赖项 这是我的 setup py from distutils core import setup setup name my project description
  • 将 Cocos2D 与 UIKit 集成

    我环顾四周 发现关于如何将 cocos2d 与 UIKit 集成的材料非常少 注意 不是相反 我的意思是 例如 在 UIView 中添加一个 cocos sprite 动画 该动画放置在分割视图控制器内 作为子视图 我怎样才能做到这一点 我
  • 为什么我使用JavascriptinnerHTML调用图片时不显示?

    我对 Javascript 还很陌生 我正在尝试一些东西 我正在使用一个函数来使用innerHTML 在表格内加载图像 但是图像不会显示 除非我在函数底部调用alert whatever 然后在警报可见时它会显示 我正在使用的代码类似于 该
  • 此异步 getter 变量在 DART 中如何工作

    我在颤振中遇到了这些代码 static Future
  • 如何使用javascript上传文件?

    我想用js创建一个上传器 谁能帮我如何使用 javascript 上传文件 您可以像这样使用 html5 文件类型
  • 如何将子窗口的客户区保存到位图文件中?

    我使用核心 WIN32 和 VC 创建了一个 Windows 应用程序 在我的父窗口中 我有一个子窗口和两个按钮 保存 和 发送 当用户单击 保存 按钮时 我想要savefileDialog要打开 用户应该能够将图像保存为位图文件 应该使用
  • Blazor - 更改 DI 服务的属性后,剃须刀页面不会更新

    使用 dotnet 3 1 100 preview2 014569 好的 考虑下面的例子 从模板创建一个新的 Blazor WebAssembly 项目 然后添加以下内容 books razor page books inject Book
  • IDE可以智能感知protobuf-python成员

    我想要在 python 中生成 protobuf 类的智能感知 但生成的protobuf类的实现比较特殊 代码如下 class X message Message metaclass reflection GeneratedProtocol
  • React:按钮 onClick 函数在页面加载时运行,但您没有单击它

    我正在使用 ReactStrap 中的 ButtonGroup 和 Button 当您单击其中一个按钮时 我设置了一个 onClick 函数 lt ButtonGroup gt
  • 使用 .htaccess (PHP) 动态创建子域

    我希望创建一个系统 在注册时将在我的网站上为用户帐户区域创建一个子域 e g johndoe website example 我认为这与 htaccess文件并可能重定向到网站上的另一个位置 我其实不知道 但任何能让我开始的信息将不胜感激
  • 在 OnException(ExceptionContext filterContext) 内部时,有什么方法可以恢复传递给 POST 操作的模型吗?

    情况是这样的 我找不到获得的方法viewModel已传递给 POST 操作方法 HttpPost public ActionResult Edit SomeCoolModel viewModel Some Exception happens