小编mfl*_*ehr的帖子

为什么父元素不包含保证金?

当具有边距的元素包含在另一个元素中时,父元素不会始终包装该边距.

很多事情会导致父母包裹孩子的边缘:

  • 边界:固体;
  • 位置:绝对的;
  • 显示:内联块;
  • 溢出:汽车

(这只是来自小型测试,毫无疑问还有更多.)

我认为这与折叠边距有关,但是:

  1. W3C规范页面没有此类行为的描述.
  2. 这里没有重叠的边距.
  3. 在这个问题上,所有浏览器的行为似乎都是一致的.
  4. 行为受与边距无关的触发器的影响

默认溢出的元素的逻辑是什么:auto应该包含与溢出设置为auto的材料不同的材料.

为什么除了常规div的默认行为之外的所有内容都假定父级包含保证金 - 为什么常规默认值不包括保证金?

编辑:最后的答案是W3C确实指定了这种行为,但那

  • 这些规格没有任何意义.
  • 规格混合,没有任何解释:
    • '自由边距'(触及父母顶部或底部的边距不包含在父母的内部)和
    • '折叠边距'(允许相邻边距重叠).

演示:

body {
  margin: 0;
}

div.block {
  background-color: skyblue;
}
div.inline-block {
  display: inline-block;
  background-color: lawngreen;
}
div.position-absolute {
  background-color: rgba(255,255,0,.7);
  position: absolute;
  bottom: 0;
  right: 0;
}
div.overflow-auto {
  background-color: hotpink;
  overflow: auto;
}
div.border {
  background-color: aquamarine;
  border: solid;
}

h2 {
  margin: 80px;
  width: 250px;
  border: solid;
}
Run Code Online (Sandbox Code Playgroud)

html css margin

51
推荐指数
1
解决办法
3万
查看次数

当仍然需要 IWebHostBuilder 时,如何处理 IWebHostBuilder.UseSerilog() 的弃用?

在 serilog-aspnetcore 版本 5.0.0 中,该UseSerilog()扩展已被弃用* IWebHostBuilder。但是,我仍在使用 aIWebHostBuilder和 aStartup类(aspnetcore 6),并且IWebHostBuilder并未弃用。

由于弃用意味着将来会被删除,我应该如何利用 Serilog 继续前进?


* 参考: https://github.com/serilog/serilog-aspnetcore/releases/tag/v5.0.0

IWebHostBuilder在平台上将扩展标记为已过时IHostBuilder

serilog

28
推荐指数
1
解决办法
1万
查看次数

ASP.NET core - 简单的API密钥身份验证

我正在尝试为控制器中的某些 API 构建一个超级简单的 API 密钥身份验证。为此,我有这个ConfigureServices()

services.AddAuthorization(options =>
{
  options.AddPolicy(
    Auth.Constants.WebmasterPolicyName,
    policy =>
      policy.RequireAssertion(context =>
      {
        if (context.Resource is HttpContext httpContext)
        {
          if (httpContext.Request.Headers.TryGetValue("X-API-KEY", out var header))
          {
            var val = header.FirstOrDefault()?.ToLower();
            if (val == "my-super-secret-key")
            {
              return Task.FromResult(true);
            }
          }
        }
        return Task.FromResult(false);
      })
  );
});
Run Code Online (Sandbox Code Playgroud)

我用这个装饰了一个 API:

[HttpDelete("{itemId:guid}")]
[Authorize(Policy = Auth.Constants.WebmasterPolicyName)]
public async Task<ActionResult> DeleteCatalogItemAsync(Guid itemId)
Run Code Online (Sandbox Code Playgroud)

当我在请求中设置正确的 API 密钥时,效果非常好。

问题是负面情况:当密钥丢失或错误时,我会收到 500 错误:

System.InvalidOperationException: No authenticationScheme was specified, and there was no DefaultChallengeScheme found. The default schemes can …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core .net-6.0

16
推荐指数
2
解决办法
4万
查看次数

将onclick事件添加到SVG元素

我在SVG教程中找到了这个例子,它解释了如何为svg元素使用onclick事件处理程序.它看起来像下面的代码:

<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='600' width='820'>

  <script type="text/ecmascript"><![CDATA[
      function changerect(evt)
      {
        var svgobj=evt.target;
        svgstyle = svgobj.getStyle();
        svgstyle.setProperty ('opacity', 0.3);
        svgobj.setAttribute ('x', 300);
      }
    ]]>
  </script>

  <rect onclick='changerect(evt)' style='fill:blue;opacity:1' x='10' y='30' width='100'
        height='100' />
</svg>
Run Code Online (Sandbox Code Playgroud)

然而,这似乎不起作用.单击元素时没有任何反应.

也许重要的是要提到我使用echo在php脚本中显示svg的事实.此外,php脚本生成的内容使用AJAX进入页面,并且:

<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='600' width='820'>

  <script type="text/ecmascript"><![CDATA[
      function changerect(evt)
      {
        var svgobj=evt.target;
        svgstyle = svgobj.getStyle();
        svgstyle.setProperty ('opacity', 0.3);
        svgobj.setAttribute ('x', 300);
      }
    ]]>
  </script>

  <rect onclick='changerect(evt)' style='fill:blue;opacity:1' x='10' y='30' width='100'
        height='100' />
</svg>
Run Code Online (Sandbox Code Playgroud)

这可能与它有什么关系吗?非常感谢您的帮助.

html ajax svg dom

14
推荐指数
2
解决办法
7万
查看次数

如何调整 div 的宽度以适应自动换行?

div当自动换行时是否可以调整元素的大小?出于演示目的,请查看类似问题中的示例:

.mypost {
  border: 1px solid Peru;
  margin: auto;
  min-width: 200px;
  display: inline-block;
  background: red;
}

.test {
  margin: 10px;
  background: cyan;
}
Run Code Online (Sandbox Code Playgroud)
<div class="mypost">
  <div class="test">I represent the imagdfv fdvdsdfsdfve.</div>
</div>
Run Code Online (Sandbox Code Playgroud)

如果将窗口缩小以便进行自动换行,您将看到文本右侧有一个蓝色的空白区域。相反,我希望蓝色区域减少,直到到达第一行的最后一个字母。

word 将文本包裹在带有空白空间的蓝色背景元素中

(在这张图片中,我强制自动换行。我希望蓝色区域缩小。)

这可能吗?

html css

13
推荐指数
1
解决办法
5631
查看次数

如何从服务器端 Blazor Net Core 5.0 调用 API 控制器操作?

我创建了一个标准 Blazor 服务器应用程序。然后我添加了一个具有读/写操作的 API 控制器。

现在我想从索引页调用一个操作,但它不起作用。应用程序运行时没有错误,但没有返回预期的结果(状态=“等待激活”,方法=“null”和结果=“尚未计算”)。我在控制器操作中放置了一个断点,但程序从未命中它。

控制器:

[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
    // GET: api/<ValuesController>
    [HttpGet]
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    // GET: api/<ValuesController>/5
    [HttpGet("{id}")]
    public string Get(int id)
    {
        return "value";
    }
}
Run Code Online (Sandbox Code Playgroud)

索引页:

<button class="btn btn-primary" @onclick="RetrieveGet">
    GET
</button>

void RetrieveGet()
{
    HttpClient Http = new HttpClient();
    string baseUrl = "https://localhost:44382/";
    var temp2 = Task.Run(async () => { await Http.GetStringAsync($"{baseUrl}api/values/5"); });
}
Run Code Online (Sandbox Code Playgroud)

Startup.cs(为简洁起见,删除了其他项目):

public void …
Run Code Online (Sandbox Code Playgroud)

asp.net-core asp.net-core-webapi blazor blazor-server-side

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

在 Blazor 组件之外设置 EventCallback&lt;string&gt;?

我正在构建一个 Blazor ProgressBar 演示,并且我试图将一些代码从我的 Blazor 组件移到一个名为 ProgressManager 的 C# 类中。这样我就可以抽象代码并使 ProgressManager 成为CascadingParameterProgressBar 组件。

我知道如何EventCallback为这样的组件设置参数:

[Parameter]
public EventCallback<string> UpdateNotification { get; set; }
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做是在 C# 类上设置这种相同类型的属性。

我的 Start 方法中有此代码:

public void ShowProgressSimulation()
{
    // Create a ProgressManager
    this.ProgressManager = new ProgressManager();
    this.ProgressManager.UpdateNotification = Refresh;
    this.ProgressManager.Start();
    
    // Refresh the UI
    StateHasChanged();
}
Run Code Online (Sandbox Code Playgroud)

不起作用的部分是: this.ProgressManager.UpdateNotification = Refresh;

错误是:

无法将方法组“Refresh”转换为非委托类型“EventCallback”。您是否打算调用该方法?

我也试过: this.ProgressManager.UpdateNotification += Refresh;

这导致“EventCallback 不能应用于方法组”(意译)。

c# blazor

12
推荐指数
2
解决办法
1408
查看次数

如何仅使用 CSS 检查滚动条是否可见

有没有办法检查滚动条是否仅使用 CSS 存在?

如果元素有滚动条,我想为其添加填充,如果没有滚动条,则不添加填充。我不想使用 JavaScript。

html css

9
推荐指数
1
解决办法
2740
查看次数

绑定密钥或路由密钥

我有一个关于 RabbitMQ 中的路由键与绑定键的问题。据我了解,生产者使用路由键向交换器发送消息。队列通过绑定键绑定到交换器。但是,我遇到了默认交换密钥的解释:

每个队列都会使用与队列名称相同的路由键自动绑定到默认 Exchange。

该声明应该说“绑定密钥”而不是“路由密钥”吗?或者这些术语基本上是等同的?

对我来说,每个队列都绑定到默认交换,绑定键等于队列名称,这意味着在内部是这样的:

channel.queueBind(queueName, "", queueName);
Run Code Online (Sandbox Code Playgroud)

它是否正确?每个队列都使用与队列名称相同的绑定键绑定到默认交换器。由于默认交换器只是一个没有名称的直接交换器,因此它会将路由键与队列的绑定键进行匹配,如果相等则路由它。我的理解正确吗?“绑定密钥”和“路由密钥”这两个术语的使用有点令人困惑。

rabbitmq

9
推荐指数
2
解决办法
9593
查看次数

修复错误“无法确定用于还原 NuGet 包的包文件夹”

我在 Azure 云构建过程中收到以下错误。我该如何解决这个问题?

“##[错误]无法确定用于还原 NuGet 包的包文件夹。请指定 -PackagesDirectory 或 -SolutionDirectory。”

restore nuget

9
推荐指数
1
解决办法
5885
查看次数