- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对此已经摸不着头脑有一段时间了,并决定让 SO 社区尝试一下......
我有一些操作可以响应客户端的 POST,执行简单的任务并返回 JsonResult
如果成功,则从具有简单 bool “成功”属性的匿名类构建,否则返回 PartialViewResult
与 ModelState
如果操作不成功,则会出现错误:
<HttpPost()> _
Public Function UpdateHeader(ByVal header As XmlReturnHeader) As ActionResult
If ModelState.IsValid Then
Dim updated As Integer = TaxRepository.XmlReturnHeader.Update(header)
If updated = 1 Then
Return Json(New With {.Success = True}, JsonRequestBehavior.AllowGet)
End If
End If
Return PartialView("Maintenance/Header", header)
End Function
在客户端,代码同样简单。我想看看结果是否有 Success
属性,请确保它确实是true
然后从那里开始:
$.post('<%= Url.Action("UpdateHeader") %>', $(this).serialize(), function (data) {
if (data.Success && data.Success === true) {
$('#list').trigger('reloadGrid');
$('#edit').dialog('close');
} else { // result must be the HTML
$('#edit').html(data);
}
});
但是,我在测试时遇到了问题。 data
我从回调函数收到的对象总是如下所示:
{ success: true }
^
s
在success
是小写的,而且因为JS区分大小写,所以我遇到了问题。
奇怪的是,如果我将 VB.NET 代码更改为
Return Json(New With {.Garbage = True}, JsonRequestBehavior.AllowGet),
我会收到
{ Garbage: true }
如果我把它改回New With { .Success = True }
,我再次看到小写的s
。
我使用IIS和IE9进行测试。我觉得响应以某种方式被缓存了。在应用程序中的其他地方,我使用小写的“成功”作为匿名 JsonResult
中的属性。范围。也许 IIS 正在缓存先前 GET 或 POST 请求的响应?
[更新]
为了测试响应缓存理论,我将代码更改为:
Return Json(New With {.Success = True, .Random = DateTime.Now.Ticks},
JsonRequestBehavior.AllowGet)
这导致客户端收到正确的响应。伟大的。但之前到底发生了什么?我以为 POST 可以免于缓存?或者这只是请求而不是响应?
以后如何避免这种情况?
[更新]
另一个花絮:我通过 jQuery 全局禁用缓存我的请求,但我没有任何 OutputCacheAttribute
或服务器端采用的任何此类“无缓存”机制。我赶紧打了一巴掌<OutputCache(NoStore:=True, Duration:=0, VaryByParam:="*")>
在整个 Controller 上,删除了 .Random
来自 JSON 的属性,但仍然收到 { success: true }
。
我已经回收了应用程序池、删除了临时 .NET 文件并清除了浏览器缓存,但同样的问题仍然存在。
最佳答案
如果您还没有看过,您可能需要查看以下有关 ASP.net MVC 中的输出缓存的文章:http://juristr.com/blog/2012/10/output-caching-in-aspnet-mvc/
根据文章,默认响应 header 包括:
Cache-Control:private
这意味着 IE可以将响应缓存在私有(private)缓存中。本文提供了三个选项来禁用这些请求的缓存:在服务器上全局禁用它(出于客户端性能原因,我不建议这样做)、编写自定义全局操作过滤器(具有相同的结果)或向您的 Controller 操作称为 OutputCache:
<OutputCache(Duration:=0)>
虽然 jQuery 设置应该执行类似的功能,但它可能不会获得相同的结果。尝试一下,看看是否有效。
关于jquery - 生成的 JsonResult 中的属性名称大小写不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12961607/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
出于某种原因,右栏中的精选文章忽略了“#elementtext”和“#elementtext:hover”属性。仅显示“p.element”和“img.element”。 有什么想法吗? 谢谢 - 塔
我有两个值,每个值都来自不同的枚举。我想检查这两者的允许组合,如果没有找到则执行默认操作。我能以某种方式对这两个值进行切换/大小写吗?我想避免使用多个 if/else 语句或遵循位掩码模式的枚举,只是
我需要 where 但 not 大小写。例如,我想找到没有名字“莎士比亚”的戏剧: _.where(listOfPlays, {author: !"Shakespeare", year: 1611})
我想实现一个 parking 场应用所以有一个带5个或更多 parking 位的车库当司机 parking 时,车库中的下一个空闲位置应该分配给他。 所以我有一个带 5 个或更多插槽的 table 上
我想使用 Erlang 来确定传递给函数的变量是否可以被数字整除。我考虑过使用 case 来执行此操作,但是我找不到解决方案。 case 是适合这项工作的工具吗? 示例:将数字传递给函数 f()。如果
我在 phpmyadmin 中创建了一个表,其列名如 first_name、last_name。当我使用命令显示表中的列名时,它会将它们显示为 first_name。 我想显示我的列名称,如 Firs
使用 Swift 4,如何使用这些规则格式化字符串: 如果单词超过 3 个字母,则首字母大写,否则大写 包含像 St-Michel 这样的连字符的 Pascal 大小写单词 我这里有初稿,但我一直在思
这个问题在这里已经有了答案: Why can't the switch statement be applied to strings? (23 个回答) 关闭 8 年前。 大家好 所以我正在尝试对
在 MVC 操作中,我如何访问使用多个同名值提交的“表单数据”中的值? 我做了什么:int、decimal、string 类型的值工作完美。 问题:每个变体都有一个复选框,所以当我尝试获取它时,它只显
while(1) { char buff[1000]; printf("Enter the word: "); fgets(buff, 1000
我有一个 Dllmain,它在线程附加到此 DLL 时分配线程本地存储。代码如下: BOOL APIENTRY DllMain(HMODULE hModule,
我有一个变量名,比如“WARD_VS_VITAL_SIGNS”,我想将它转换为 Pascal 大小写格式:“WardVsVitalSigns” WARD_VS_VITAL_SIGNS -> WardV
我是 Swift 编码的新手,正在尝试弄清楚如何在触摸节点时制作具有开/关功能的循环音频。我认为实现它的最佳方式是通过 SKAudioNode,但我不确定我在以下代码中做错了什么。当在节点上按下时 -
这是我第一次使用这种枚举,具有关联值类型的枚举,我需要根据对象的类型制作一个 switch 语句,我无法做到,这是枚举: enum TypeEnum { case foo(FooClass)
我想从字符串中删除所有下划线,下划线后面的字符为大写。因此,例如:_my_string_ 变为:MyString 同样:my_string 变为 MyString 有没有更简单的方法呢?我目前有以下内
如何在 Java 中将蛇形大小写转换为 Camel 形大小写? 输入:“input_in_snake_case” 输出:“InputInSnakeCase” 最佳答案 Guava通过其CaseForm
我们有一个表auth_group_access,那么如何使用呢? 在使用M方法时,对于带下划线的表名,可以采用如下方法。 M('AuthGroupAccess'); 对应sql语句SQL: S
我正在制作一个 pygame 游戏,每当我运行我的代码时,我都会收到错误 expected ':'。我知道在 match/case block 中使用 [ 和 ] 用于其他用途,但我该如何解决这个问题
有人能告诉我是否可以使用正则表达式将 url 转换为小写? 这是在 html img 标签内,所以我们可以通过标签找到网址。 这是我所拥有的一个例子 我需要在最后小写图像名称。 该文档包含更多 H
我是一名优秀的程序员,十分优秀!