.NET 6 / C# 10 引入了TimeOnly和DateOnly结构,分别表示仅时间和日期。
好的旧DateTime结构总是有一个Now静态属性,它可以为您提供当前的日期和时间。
我期望TimeOnly和DateOnly结构具有相似的静态属性;喜欢TimeOnly.Now或DateOnly.Today,但他们显然不喜欢。
那么,如果我想要一个DateOnly代表当前日期的对象,或者TimeOnly代表当前时间的对象,该怎么办呢?
我还想知道为什么他们决定不在这两个新结构中包含类似的属性?
是否可以使用javascript/jquery获取元素的顶部位置?
如果重要的话,元素是一个表.
我正在尝试创建一个函数(在JavaScript中)通过在每个(例如)300毫秒(在<p>标记中)逐个编写其字母来编写句子.我写过:
var text = ["H", "e", "l", "l", "o", " ", "h", "o", "w", " ", "a", "r", "e", "y", "o", "u", "?"]
function typeText() {
var i = 0;
var interval = setInterval(function () {
var parag = document.getElementById("theParagraph");
var paragOldText = parag.innerText;
parag.innerText = paragOldText + text[i];
i++;
if (text.length == i)
clearInterval(interval);
}, 200)
}Run Code Online (Sandbox Code Playgroud)
<body>
<p id="theParagraph"></p>
<button id="typeButton" onclick="typeText()" style="padding:15px">Start typing the sentence</button>
</body>Run Code Online (Sandbox Code Playgroud)
如您所见,数组中有一些""(空格)字符; 问题是它没有写那些空格,所以句子就像这样:"Hellohowareyou".我该如何解决这个问题?
我知道调用该StateHasChanged()方法会通知组件状态已更改,因此它应该重新渲染。
但是,我也看到调用await InvokeAsync(StateHasChanged)或await InvokeAsync(() => StateHasChanged())在其他人的代码中,但我不太明白它与其他人的代码有何不同StateHasChanged()以及应该在何处选择一个,以及为什么.
我能找到的唯一信息是Blazor 文档的这一部分,它说:
如果必须根据外部事件(例如计时器或其他通知)更新组件,请使用 InvokeAsync 方法,该方法分派到 Blazor 的同步上下文。
我不太明白这个。它只是说“......它调度到 Blazor 的同步上下文”,但我对此不太满意!什么是“Blazor 的同步上下文”?
我试过在 a的事件中调用StateHasChanged()- 而不是InvokeAsync(StateHasChanged)- ,它按预期工作,没有任何问题。我应该打电话吗?!如果是这样,为什么?我觉得这里可能有一些我不知道的重要细微差别。TimerElapsedawait InvokeAsync(StateHasChanged)
我也看到过类似的电话InvokeAsync(() => InvokeAsync(Something)),为什么?
另外,我有时也会看到InvokeAsync()没有调用await,那有什么关系?!
我有一个宽度和高度未知的 div,这个 div 是一个更大的 div 的子节点之一。
#myDiv {
/* Blah blah blah */
}
#inner {
position: absolute;
width: 100%;
height: 100%;
}Run Code Online (Sandbox Code Playgroud)
<div id="myDiv">
<div id="inner"></div>
</div>Run Code Online (Sandbox Code Playgroud)
但问题是#innerdiv 不适合,#myDiv当它的宽度和高度设置为 时,它比它的父级大得多100%。
我究竟做错了什么?
在 ASP.NET MVC 中,只要您有一个控制器和一个操作,您就可以在 Razor 页面中动态生成指向它的链接,如下所示:
Url.Action("ProductController", "Index", new { id = "123" })
Run Code Online (Sandbox Code Playgroud)
这将返回一个字符串,其中包含具有指定路由值的该操作的路径:
/Product/123
Run Code Online (Sandbox Code Playgroud)
Blazor 中是否有类似的方法,您可以为其提供组件的名称和路由值:
Url.Component("ProductPage", new { id = "123" })
Run Code Online (Sandbox Code Playgroud)
并得到路径?
/Product/123
Run Code Online (Sandbox Code Playgroud) 我有一个布局 ( MainLayout.razor),它有一个名为ShowFooter. 在某些页面上,我希望能够将该标志设置为true,而将其他一些设置为false。
我还没有找到任何关于页面(即带有路由的组件)如何与其布局进行通信的明确说明。这可以/应该如何在 Blazor 中完成?
注意:您可能建议使用 2 种布局,一种有页脚,一种没有页脚,但这并不能真正解决我的问题,我希望能够在同一页面的不同时间显示和隐藏页脚。另外,这只是需要在布局和页面之间进行通信的一种情况。还有无数其他的。
在 Blazor 应用程序中,我有一个<input type="text" />,并且我正在尝试执行某些操作,以便无法在其中输入非数字字符。
这是我到目前为止所做的,看起来效果很好:
<input type="text" @bind="InputContent" @bind:event="oninput" />
@code {
string inputContent;
string InputContent
{
get => inputContent;
set => inputContent = StripNonDigits(value);
}
string StripNonDigits(string str)
{
return new String(str.Where(c => char.IsDigit(c)).ToArray());
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我想知道:
@bind?在 JS 中,要做同样的事情,您将监听oninput事件,如果输入的字符不是数字,则执行event.preventDefault(). 据我所知,在 Blazor 中你不能完全做到这一点,对吗?
我是 SPA 框架和 Blazor 的新手,因此这可能是一个很容易回答的问题,尽管我在其他地方找不到答案。
我想在用户单击特定按钮后立即在页面上的某个位置显示一个组件。我目前是这样实现的:
@page "/test"
<button type="button" @onclick="() => showSignUpComponent = true">
Show Sign Up Window
</button>
@if (showSignUpComponent)
{
<SignUp />
}
@code {
bool showSignUpComponent;
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好、更干净的方法(即正确的方法)在 Blazor 中执行类似的操作,或者这是常见的“标准”方法?
blazor ×5
c# ×2
html ×2
javascript ×2
.net-6.0 ×1
asp.net ×1
asp.net-mvc ×1
c#-10.0 ×1
css ×1
dateonly ×1
datetime ×1
jquery ×1
lazy-loading ×1