我正在尝试获取使用Blazor框架进行检查的复选框的值,但到目前为止我找不到任何方法。当我将绑定放在复选框中时,始终会选中它。我不知道如何获得检查的值。
这是我的代码:
<input type="checkbox" id="addition" name="math" value="add" bind="@name" />
<label for="addition">Addition</label>
Run Code Online (Sandbox Code Playgroud) Blazor可用于创建客户端C#脚本编写的网页。我已经在各个地方(例如MSDN Magazine文章)阅读过文章,这些地方一旦建立,便可以将文件放在任何服务器上。我的理解是,也可以将工件放置在文件共享上。
但是,这不是我观察到的。dotnet run
通过在Visual Studio中通过模板创建的Blazor Web应用程序的项目目录中运行,可使红k Web服务器启动,并且我可以通过指定的http://localhost:port/
地址访问工作的网页。
当我index.html
在的WebApplication1\bin\Debug\netstandard2.0\publish\WebApplication1\dist
帮助下打开在路径下生成的时,dotnet publish
我在Web浏览器中仅看到一个文字“ Loading ...”。
我已经看过了index.html
,乍一看,它看起来像是_framework/blazor.webassembly.js
匹配目录结构的路径。渔获物在哪里?
我在Blazor有一个项目
在客户端,我想读取哈希参数
我知道如何在JavaScript中进行操作-但我的问题是在Blazor项目的c#客户端中如何进行操作
例如,我有一个URL http:// localhost:5060 /#token = 12345678
怎么服用token
?
我在index.cshtml中的代码
@page "/"
@inject Microsoft.AspNetCore.Blazor.Services.IUriHelper UriHelper
<h1>Hello, world!</h1>
url is @Url
@functions {
protected override void OnInit() {
Url = GetUrl();
}
public string Url { get; set; }
public string GetUrl() {
return ?;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试基于Blazor在Blazor中进行Enable/Disable
一组time
输入checkbox
;对于inputs
类型button
,以下解决方案有效,对于类型的输入time
则无效:
有效的按钮输入解决方案
<button type="button"
class="@this.SetButton">
</button>
[Parameter] public bool state{get;set;}
public string SetButton() {
string result = state == true ? "" : "disabled";
return result;
}
Run Code Online (Sandbox Code Playgroud)
尝试输入无效的时间
<input bind="@IsDisabled" type="checkbox" />
<input class="@this.GetGroupState()" type="time" />
protected bool IsDisabled { get; set; }
public string GetGroupState() {
return this.IsDisabled ? "disabled" : "";
}
Run Code Online (Sandbox Code Playgroud)
PS在第一种情况下,bool
它是另一个参数,component
所以我不绑定它。但在第二种情况下,它必然会checkbox
在我的Blazor应用程序中,在客户端,IntelliSense抱怨很多Microsoft.AspNetCore软件包,尽管该项目可以编译并运行良好。
我得到很多东西
The type or namespace name 'Mvc' does not exist in the namespace 'Microsoft.AspNetCore' (are you missing an assembly reference?)
The type or namespace name 'Razor' does not exist in the namespace 'Microsoft.AspNetCore' (are you missing an assembly reference?)
...
Run Code Online (Sandbox Code Playgroud)
像
@inject HttpClient Http
Run Code Online (Sandbox Code Playgroud)
还用红色波浪线强调。
该项目的构建和运行完美。
怎么了
因为要求我提供所有版本:
Id Versions ProjectName
-- -------- -----------
Microsoft.AspNetCore.Blazor.Build {3.0.0-preview4-19216-03} MyBlazorApp.Client
Microsoft.AspNetCore.Blazor {3.0.0-preview4-19216-03} MyBlazorApp.Client
NETStandard.Library {2.0.3} MyBlazorApp.Client
Run Code Online (Sandbox Code Playgroud) 我收到 HTTP错误 404.11 - 未找到请求过滤模块配置为拒绝包含双转义序列的请求。 当我向 Blazor 中的 .razor 页面发送请求时出错,链接是动态构建的并发送到用户电子邮件:
string confirmationLink = $"{HttpContext.Request.Scheme}://{Request.Host}/account/confirmemail/{System.Web.HttpUtility.UrlEncode(user.Id)}/{System.Web.HttpUtility.UrlEncode(confirmationToken)}";
Run Code Online (Sandbox Code Playgroud)
我在五个地方修改了 IIS Express 配置文件:
在所有情况下,我都修改了
<requestFiltering allowDoubleEscaping="true">
Run Code Online (Sandbox Code Playgroud)
“web.server”“安全”部分中的标记。但我仍然收到错误。有什么解决办法吗?
我想在我的服务器端 Blazor 应用程序中使用 Open ID Connect 和 Identity Server 4 进行授权。我在 MVC 应用程序中使用了相同的设置。
使用最新的 .NET Core 版本 3.0 Preview 6,可以将属性“@attribute [Authorize]”添加到站点。但是如果我没有获得授权,我就不会被重定向到 Identity Server 来登录,因为我是在我的 MVC 应用程序中使用的。相反,该站点仅显示消息“未授权”。
在 Startup.cs 中,我有以下设置:
services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.Authority = "http://localhost:5000";
options.RequireHttpsMetadata = false;
options.ClientId = "myClient";
options.SaveTokens = true;
});
Run Code Online (Sandbox Code Playgroud)
和
app.UseAuthentication();
Run Code Online (Sandbox Code Playgroud)
如果我没有登录,我如何告诉应用程序我想被重定向到身份服务器?
编辑:Codevisions 答案是一种解决方法。我在这里和这里发现了悬而未决的 github 问题,计划在 .NET Core 3.0 Preview 7 中正式解决这个问题。
我有一个 blazor 应用程序,在一个页面中,我使用以下代码根据当前用户角色显示一些部分。
<AuthorizeView Roles="EditorAdmin">
<Authorized>
<MatIconButton Icon="dashboard" OnClick="@OnClickDashboard"></MatIconButton>
</Authorized>
</AuthorizeView>
Run Code Online (Sandbox Code Playgroud)
在服务器上,我分配了一个新角色:
Microsoft.AspNetCore.Identity.UserManager.AddToRoleAsync
Run Code Online (Sandbox Code Playgroud)
但是,它对 UI 没有影响,我需要注销然后登录。我想更新我的用户界面,但如何更新?
似乎StateHasChanged()
只有在对 Task 执行 await 操作后才会触发组件的重新渲染(在此处找到)。
所以我只想StateHasChanged
用于重新渲染而不是使用Task.delay
or Task.Run
。
这是我的代码:
protected async Task ClearSearch()
{
SearchTestCoupon = new Mechanic.Shared.TestCouponSearch();
IsBusy = true;
TestCouponGroups = new List<Mechanic.Shared.TestCouponGroup>();
StateHasChanged(); // << -------- **FIRST TIME**
//await Task.Delay(TimeSpan.FromSeconds(1));
await GetTestCouponGroups(SearchTestCoupon);
}
protected async Task GetTestCouponGroups(object args)
{
TestCouponGroups = await TestCouponService.GetTestCouponGroupsAsync(SearchTestCoupon);
IsRowSelected = false;
IsBusy = false;
StateHasChanged(); // << -------- **SECOND TIME**
}
Run Code Online (Sandbox Code Playgroud)
在这里,我使用加载器,它使用IsBusy
. 但是StateHasChanged
在代码中提到的第一次调用时它不起作用。
但它第二次按预期呈现组件。
我已经使用过,Task.Delay
但它破坏了我的其他功能,例如清除网格和显示搜索数据等。
blazor ×10
c# ×4
asp.net-core ×2
html ×2
.net-core ×1
exception ×1
identity ×1
iis-express ×1
rendering ×1