Динамично Загрузка пользовательский элемент управления (ascx) в веб-сайте asp.net

SELECT * FROM [server].[database].[schema].[table]

Это работает на меня. SSMS intellisense может все еще подчеркнуть это как синтаксическую ошибку, но он должен работать, если Ваш связанный сервер настроен, и Ваш запрос в других отношениях корректен.

8
задан Joel Coehoorn 17 August 2009 в 10:47
поделиться

4 ответа

Предполагая, что элемент управления существует в той же сборке, что и ваш веб-проект, вам необходимо добавить справочную директиву в ваш файл .aspx,

например:

<%@ Reference Control="~/Controls/WebControl1.ascx">

Имейте в виду, что часто требуется несколько минут (а иногда и сборка) для IntelliSense, чтобы это уловить.

10
ответ дан 3 November 2019 в 14:19
поделиться

Это легко сделать с помощью пространств имен. Вот пример:

WebControl1.ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebControl1.ascx.cs" Inherits="MyUserControls.WebControl1" %>

Обратите внимание, что Inherits ссылается на пространство имен (MyUserControls), а не только на имя класса (WebControl1)

WebControl1.ascx.cs:

namespace MyUserControls
{
    public partial class WebControl1 : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

Обратите внимание, что класс был включен в пространство имен MyUserControls

Default.aspx.cs:

using MyUserControls;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var control = (WebControl1) Page.LoadControl("~/WebControl1.ascx");
    }
}

Этот подход потенциально позволяет вам перераспределить ваши пользовательские элементы управления (или сохранить их в отдельном проекте) без необходимости ссылаться на них в ваши файлы .aspx.

7
ответ дан 3 November 2019 в 14:19
поделиться

ссылки недостаточно, используя

<%@ Reference Control="~/Controls/WebControl1.ascx">

в файле aspx, это всего лишь одна часть ответа.

вам также необходимо добавить calssName в файл aspx пользовательского элемента управления

<%@ Control ClassName="WebControl1" Language="C#" AutoEventWireup="true" CodeFile="WebControl1.ascx.cs" Inherits="AnySpaceName.DateSelector" %>

а затем вы можете использовать userontrol в своем файле aspx

AnySpaceName.WebControl1 WC = (AnySpaceName.WebControl1)Page.LoadControl("~/WebControl1.ascx");    
2
ответ дан 3 November 2019 в 14:19
поделиться

Приведение пользовательского элемента управления таким образом может создать множество проблем. Мой подход состоит в том, чтобы создать класс (скажем, класс управления), поместить в него все свойства и методы, необходимые для преобразования, и унаследовать этот класс от System.Web.UI.UserControl. Затем в вашем файле кода управления пользователем вместо System.Web.UI.UserControl используйте этот класс управления.

теперь, когда вам понадобится приведение, используйте только этот класс. это также будет световой литье.

1
ответ дан 3 November 2019 в 14:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: