gpt4 book ai didi

asp.net-mvc - 如何在我的 MVC 项目后面的代码中访问服务器端控件?

转载 作者:行者123 更新时间:2023-12-04 19:24:07 26 4
gpt4 key购买 nike

首先,让我声明我知道在我的 View 中访问服务器端控件在 MVC 中是不受欢迎的。但是,我需要在我的情况下(据我所知)。这是我的故事。 :)

我在我的 Web 应用程序中使用了一个 3rd 方控件。我目前的任务是将我们的 WebForms 解决方案移植到 MVC。这个特定的第三方 Web 控件需要 WebForms 架构,所以我希望只使用我的 WebForms 项目中的相同代码。

我的 initial approach是有两个网站(一个 WebForms 站点和一个 MVC 站点),然后使用来自 MVC 端的 iFrame 链接这两个站点。虽然我知道这会奏效,但仅仅使用这个特定的控件就有点矫枉过正了。经过更多的研究,我discovered我可以“混合男孩”并在 MVC 项目中使用 WebForms 架构。因此,我采用的新方法是仅将使用此 3rd 方控件的页面复制到特定目录(即“View\SomeDir\WebForms”)中,然后在我的 global.asax 文件中忽略该目录,以便MVC 路由系统没有选择它:

routes.IgnoreRoute("View\SomeDir\WebForms\{*pathInfo}");

不幸的是,当我将 ASPX 页面复制到我的 MVC 项目时,我发现 CodeBehind 没有授予我访问页面上的控件的权限。以下是设置的方式:
<%@ Register 
Assembly="..."
Namespace="..."
TagPrefix="custom" %>

<custom:SomeControl ID="customControl" runat="server" />

这是我的代码背后的样子:
public class MyPage : Page
{
protected void Page_Load(object sender, EventArgs args)
{
Debug.WriteLine(customControl.ID); // <-- COMPILE ERROR: Cannot resolve symbol 'customControl'
}
}

不幸的是,我的项目甚至无法编译,因为我在 CodeBehind 中的每个控件上都收到此错误。将其他控件(即标签、面板、文本框等)转换为客户端标签不是问题,但我需要在我的代码后面访问这个自定义控件,以便我可以收听它的(服务器端) 事件并做出相应的响应;基本的 WebForms 东西...

我正在尝试做的甚至可能吗?我想到的另一种方法 might工作是在 Controller 类中初始化和捕获服务器端事件。但是,我想避免序列化 View 中控件的状态,只是将其传递给 Controller ​​并在可能的情况下返回?

提前感谢您的任何建议!

最佳答案

碉堡了!!我在发布此内容后 10 分钟找到了解决方案。

解决方法是右键单击我的项目并说“转换为 Web 应用程序”并将我的 CodeBehind 类更改回“部分”。我所有的控件现在都可以通过后面的代码访问。

感谢您的阅读,我希望我的问题/答案有一天能对其他人有所帮助。 :)

关于asp.net-mvc - 如何在我的 MVC 项目后面的代码中访问服务器端控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1014987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com