当具有边距的元素包含在另一个元素中时,父元素不会始终包装该边距.
很多事情会导致父母包裹孩子的边缘:
(这只是来自小型测试,毫无疑问还有更多.)
我认为这与折叠边距有关,但是:
默认溢出的元素的逻辑是什么: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) 在 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
我正在尝试为控制器中的某些 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) 我在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)
这可能与它有什么关系吗?非常感谢您的帮助.
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)
如果将窗口缩小以便进行自动换行,您将看到文本右侧有一个蓝色的空白区域。相反,我希望蓝色区域减少,直到到达第一行的最后一个字母。
(在这张图片中,我强制自动换行。我希望蓝色区域缩小。)
这可能吗?
我创建了一个标准 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) 我正在构建一个 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 不能应用于方法组”(意译)。
有没有办法检查滚动条是否仅使用 CSS 存在?
如果元素有滚动条,我想为其添加填充,如果没有滚动条,则不添加填充。我不想使用 JavaScript。
我有一个关于 RabbitMQ 中的路由键与绑定键的问题。据我了解,生产者使用路由键向交换器发送消息。队列通过绑定键绑定到交换器。但是,我遇到了默认交换密钥的解释:
每个队列都会使用与队列名称相同的路由键自动绑定到默认 Exchange。
该声明应该说“绑定密钥”而不是“路由密钥”吗?或者这些术语基本上是等同的?
对我来说,每个队列都绑定到默认交换,绑定键等于队列名称,这意味着在内部是这样的:
channel.queueBind(queueName, "", queueName);
Run Code Online (Sandbox Code Playgroud)
它是否正确?每个队列都使用与队列名称相同的绑定键绑定到默认交换器。由于默认交换器只是一个没有名称的直接交换器,因此它会将路由键与队列的绑定键进行匹配,如果相等则路由它。我的理解正确吗?“绑定密钥”和“路由密钥”这两个术语的使用有点令人困惑。
我在 Azure 云构建过程中收到以下错误。我该如何解决这个问题?
“##[错误]无法确定用于还原 NuGet 包的包文件夹。请指定 -PackagesDirectory 或 -SolutionDirectory。”