我正在使用 Blazor 和 Windows 身份验证启动一个新站点,并且需要识别查看页面/组件的当前用户。
对于 Razor 页面,可以使用 访问当前用户名Context.User.Identity.Name,但这在 Blazor 组件中似乎不起作用。我尝试将 HttpContext 注入组件,但 Context 在运行时为空。
作为奖励,我最终希望将其合并到 Startup.cs 中,因此我只需要获取一次用户名,就可以为我的应用程序利用企业用户类(使用 EF Core)。也将不胜感激针对该用例量身定制的答案。
asp.net-core blazor blazor-server-side .net-core-3.0 ef-core-3.0
我有一个gridview用于根据下拉列表中的选定值显示记录.
在gridview中,在代码后面添加了动态数量的绑定字段列,然后是模板字段中的下拉列表和第二个模板字段中的按钮.
问题是,当我点击按钮时,模板字段消失.
网格视图
<asp:UpdatePanel ID="upnlDetail" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:GridView ID="gvDetails" runat="server"
AutoGenerateColumns="false"
SkinID="gridviewGray"
CellPadding="3"
OnRowCommand="gvDetails_RowCommand"
OnRowDataBound="gvDetails_RowDataBound"
AllowSorting="true">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList ID="ddlStatus" runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="ddlStatus_SelectedIndexChanged">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnSave" runat="server"
CommandName="Save"
CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
Text="Save" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
代码背后
while (gvDetails.Columns.Count > 2) //Don't remove the rightmost columns
{
gvDetails.Columns.RemoveAt(0);
}
gvDetails.Columns.Insert(0, GridViewTools.CreateBoundField(
"Request.Amount", "Amount", "Money", 50));
gvDetails.Columns.Insert(0, GridViewTools.CreateBoundField(
"Request.CustomerName", "Customer", "comment", 200));
gvDetails.Columns.Insert(0, GridViewTools.CreateBoundField(
"Request.BillAccountFormatted", "Account", "text", 100));
gvDetails.Columns.Insert(0, GridViewTools.CreateBoundField( …Run Code Online (Sandbox Code Playgroud)