You need to enable JavaScript to run this app. 如何在ASP.NET Core中使用System.Web.UI.UserControl
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET Core中使用System.Web.UI.UserControl

ASP.NET Core 已完全移除传统 ASP.NET Web Forms 体系下的 UserControl 类型,没有直接等价的内置类,原有代码无法直接复用,需要根据原 UserControl 的实际业务场景选择对应实现方案。

原代码作用是将 oLogSite (object 类型)尝试转换为 UserControl 实例,目的一般是操作控件属性、方法或者获取其渲染输出,对应不同场景的实现方式如下:

场景1:原UserControl为可复用UI组件

如果原UserControl是用来封装公共UI片段,对应ASP.NET Core的两种实现方案:

  • 简单无业务逻辑的UI复用:使用局部视图(Partial View)
    把原UserControl的前端渲染逻辑迁移到.cshtml后缀的局部视图文件,需要渲染时调用 @await Html.PartialAsync("你的局部视图名称", 传入的模型参数) 即可。
  • 带有独立业务逻辑的UI复用:使用视图组件(View Component)
    1. 新建继承自ViewComponent的类,在InvokeAsync方法中编写业务逻辑、返回模型
    2. 配套编写对应的.cshtml视图文件
    3. 需要渲染时调用 @await Component.InvokeAsync("你的组件名", 传入参数) 即可。
场景2:后端动态生成控件并获取渲染HTML

如果原逻辑是在后端代码中动态创建UserControl实例、赋值属性后获取渲染后的HTML字符串,可以通过ASP.NET Core的 Razor 视图渲染服务实现:

  • 基于官方的IRazorViewEngineAPI封装视图渲染服务,传入要渲染的视图/组件名称、模型参数,即可直接获取渲染后的HTML字符串,无需操作控件实例。
类型转换逻辑的等价写法

如果你已经把原UserControl的逻辑封装为自定义类(比如名为LogSiteComponent),原类型转换代码可以替换为:

LogSiteComponent ctrl = oLogSite as LogSiteComponent;

你只需要根据自己封装的对应类型做转换即可。

内容的提问来源于stack exchange,提问作者Lakshm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 01:27:04