小编Ham*_*asi的帖子

如何强制浏览器使用版本控制重新加载缓存的静态文件?


部署网站的新版本后,浏览器会从旧网页的缓存中加载所有内容,直到完成硬性强制刷新。

ASP.NET MVC该文件成为捆绑,它通过优化框架处理。添加到您的文件链接的版本,如果您的包文件发生更改,则会生成新令牌。按照下面的代码:

例如,js文件名是:datatables

当你把它放在同名的包中时,你会看到

datatables?v=anY9_bo7KitrGnXQr8ITP3ylmhQe9NDzSjgLpLQWQFE1
Run Code Online (Sandbox Code Playgroud)

作为文件名。更改datatables并在浏览器中再次查看文件名,肯定会更改:

datatables?v=r8yhQBxKyDgrOGyqr1ndtdG92Ije09nqTY7yogrOSTk1
Run Code Online (Sandbox Code Playgroud)

但是有两个问题:

  • 如果我们的文件不在 Bundle 中,我们该怎么办?
  • 是一种强制浏览器刷新缓存的方法吗?

c# asp.net asp.net-mvc caching browser-cache

10
推荐指数
2
解决办法
2764
查看次数

C# 8 从具体类型中调用默认实现

给出以下interface默认实现:

public interface IState
{
    string Name => "Unknown";
}
Run Code Online (Sandbox Code Playgroud)

以及一个具体的实现如下:

public class Demo: IState
{
    public void PrintName()
   { 
       Console.WriteLine(this.Name); // <-- this is invalid syntax
   }
}
Run Code Online (Sandbox Code Playgroud)

是否可以从具体类型中调用默认实现?

我已经查看了 C# 8.0 的默认实现的文档 ,如果答案在那里,我无法发现它。

.net c# c#-8.0

5
推荐指数
1
解决办法
225
查看次数

使用 Rollup 哈希文件名

我对捆绑程序相当陌生,rollup特别是。rollup.config.js在构建生产时有条件地散列文件名,同时保存index.html以引用新版本.css.js 散列版本的最佳方法是什么?

我在文档中看到了这一点,但我想我不知道如何根据dev/prod设置有条件地设置这些选项?

output: {
        sourcemap: true,
        format: 'iife',
        name: 'app',
        file: 'public/build/bundle.js'
       // entryFileNames : 'bundle[hash].js
    },
Run Code Online (Sandbox Code Playgroud)

或者正在使用rollup-plugin-hash更好的解决方案?仍然不确定更新的最佳实践是什么index.html (以及清单文件选项提供什么?)

hash rollupjs

5
推荐指数
1
解决办法
4045
查看次数

通过ajax发布到控制器的模型为空

我正尝试通过Ajax仅向控制器发送2个ID,如下所示,但是该模型完全为空。

我的视图模型非常简单,如下所示:

public class CityAreaBindingModel
{
    public int CityID { get; set; }
    public int AreaID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

查看:两个下拉列表,可帮助选择城市和区域

        <select class="form-control" id="CityID" name="CityID">
            @{
                foreach (var city in ViewData["Cities"] as List<SamsungTools.Models.City>)
                {
                    <option value="@city.ID" @(city.ID == 1 ? "selected" : "")>@city.Title</option>
                }
            }
        </select>
        <select class="form-control" id="AreaID" name="AreaID">
            @{
                foreach (var area in ViewData["Areas"] as List<SamsungTools.Models.Area>)
                {
                    <option value="@area.ID" @(area.ID == 1 ? "selected" : "")>@area.Title</option>
                }
            }
        </select>
Run Code Online (Sandbox Code Playgroud)

Ajax:将formData与视图中的两个选定ID结合使用

var cId = $('#CityID').val();
var aId = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net ajax model-view-controller

2
推荐指数
1
解决办法
52
查看次数