在 c# Razor 6.0 页面上的代码隐藏中访问 Html 控件

Posted

技术标签:

【中文标题】在 c# Razor 6.0 页面上的代码隐藏中访问 Html 控件【英文标题】:Accessing Html Controls In Code Behind on c# Razor 6.0 Page 【发布时间】:2021-12-27 19:10:22 【问题描述】:

我正在尝试抓取 html 元素,以便首先设置然后获取单选列表的选定值。我有以下元素

        <input type="radio" id="radioAlertOnly" name="AnomalyLevel" runat="server" value="0" />
        <input type="radio" id="radioIsolateAndAlert" name="AnomalyLevel" runat="server" value="1" />
        <input type="radio" id="radioRemediateAndAlert" name="AnomalyLevel" runat="server" value="2" />
        <input type="radio" id="radioRemediateAndLog" name="AnomalyLevel" runat="server" value="3" />

我尝试添加 Blazor.WebForm.UI 包,该包提供对 System.Web.UI 和 System.Web.UI.HtmlElements 库的访问,但它们都没有 FindControl 方法。

我也尝试只使用面板,但没有任何区别。

有人知道如何在后面的代码中访问这些元素吗?

【问题讨论】:

我遵循了这个问题中的指导 - ***.com/questions/41395612/… - 但在编写控件时我仍然没有获得 asp 选项。 我已将 the_ViewImports.cshtml 添加到 Razor 主页面所在的 Pages 文件夹中。我在其中有一个到 Pages 文件夹的导入,指向我的程序集名称的命名空间和主 @addTagHelper *,Microsoft.AspNetCore.Mvc.TagHelpers 而且它仍然不起作用。 @KenTola 自 2009 年发布的 ASP.NET MVC 1.0 以来,ASP.NET 中没有 HTML Controls。这是一个 WebForms 概念,它试图让网站表现得像桌面应用程序和 在过去 12 年中没有被任何其他框架使用。 WebForms 没有迁移到 .NET Core,因为它已经过时了十年。 @KenTola 您无法将 WebForms 应用程序迁移到 ASP.NET Core。你必须重写它。 Razor Pages 的行为有点像 WebForms,没有像服务器端 HTML 控件这样的坏部分。中间件是完全不同的——身份验证、授权、身份、数据访问是完全不同的。生成的 HTML 完全不同,数量级更少。浏览器不同。 input type='date' 的行为比 WebForms 中的任何 DatePicker 都好,无需任何 javascript 或服务器端代码 Blazor.WebForm.UI package that provides access to the System.Web.UI 不,它没有。 Blazor 是一种使用在客户端上运行的 WebAssembly 的全新技术。您使用的是模拟一些旧的 WebForms 控件的第三方包。它不能单独使用,它是this project 的一部分。它仅适用于 Blazor 应用程序。如果您只是将示例代码与创建新 Blazor 项目时生成的 FetchData 进行比较,您就会明白为什么 WebForms 已死 【参考方案1】:

@panagiotis-kanavos 在上面的 cmets 中给出了很好的答案。

我还发现您可以使用JavaScript calls 或简单的@Ref 调用HTML Elements 或frontend components,如提供的链接所示。

【讨论】:

以上是关于在 c# Razor 6.0 页面上的代码隐藏中访问 Html 控件的主要内容,如果未能解决你的问题,请参考以下文章

ASP.net Core Razor Pages - 在代码隐藏中获取指定 div 的 HTML

基于下拉选择mvc 4 razor c#的显示/隐藏控件

如何从代码隐藏c#中显示隐藏的div

如何使剃刀视图引擎使用c# 6.0

如何使用 ASP.NET Core 同时制作 Razor Page 和 C# 代码框架?

Asp.Net Core 上的 Razor 页面 - 添加了 Razor 页面但无法让页面显示