我有一个页面 foo.razor,它代表一个表单:
<EditForm Model=SomeModel>
<InputText @bind-Value=SomeModel.Property1 />
<InputText @bind-Value=SomeModel.Property2 />
<p>a paragraph</p>
</EditForm>
Run Code Online (Sandbox Code Playgroud)
在它旁边我有一个独立的 CSS,foo.razor.css,例如:
input{
display: block;
}
p{
color: lime;
}
Run Code Online (Sandbox Code Playgroud)
段落的样式正确应用,但输入元素的样式不正确。我不明白为什么。
另外,我知道 blazor 会在编译后为元素生成随机 id。在浏览器中,我可以看到该段落具有这样的 id,但输入和表单元素却没有。
我尝试为组件添加类名并使用深度选择器,如下所示:
::deep .classname {
.......
}
Run Code Online (Sandbox Code Playgroud)
但这也行不通。
我有一个 blazor wasm 托管应用程序,用户可以通过填写表单来创建帐户。创建帐户后,系统会向用户发送一封电子邮件,其中包含他/她必须点击的链接以确认他/她对电子邮件地址的所有权。该链接指向我的服务器中的操作方法。同一服务器托管 blazor wasm 应用程序和 API。
问题是,当用户单击该链接时,请求不会发送到服务器。相反,blazor 会拦截调用并尝试路由到页面。
我怎样才能做到这一点?如何创建一个指向我的服务器中的操作的链接,在单击时实际将其发送到服务器?换句话说,如果可能的话,如何绕过 blazor 的路由系统?
更新:
Url.Action("actionName", "controllerName", actionParam, Request.Scheme);。目前,该链接看起来像
https://localhost:5001/api/user/confirmaemail?confirmationtoken=xyz&useremail=abc<NotFound />因此会显示组件(App.razor 文件)内的内容。注意:
这不是错误。这是 balzor wasm 的正常行为。如果应用程序托管在,则对(例如 )www.foo.com的所有调用实际上不会进行,但会被 blazor 拦截并视为应用程序中页面的路由。然而,这阻止了我,因为我的 API 与应用程序具有相同的基地址(应用程序目前位于 at ,API 位于),因此,当我单击链接时,blazor 会阻止对服务器的调用。问题是如何解决这个问题?如果不可能,我还需要哪些其他选项来实现此流程?foo.comwww.foo.com/barfoo.comlocalhost:5001/localhost:5001/api/xyz