Загрузите ascx компонент с помощью кода C#

Если вам требуется распечатать только значение, то:

  • {{obj.REZCMD}}
  • Этот метод указан в документации: https://docs.angularjs.org/api/ng/directive/ngRepeat [ 111]

    10
    задан Karim 10 March 2010 в 20:47
    поделиться

    4 ответа

    You need to create a page in which you render the control:

    public static string RenderUserControl(string path)
    {
        Page pageHolder = new Page();
        Control viewControl = pageHolder.LoadControl(path);
    
        pageHolder.Controls.Add(viewControl);
        using(StringWriter output = new StringWriter())
        {
            HttpContext.Current.Server.Execute(pageHolder, output, false);
            return output.ToString();
        }
    }
    

    A user control on its own will not render. (This article has some related information from which I borrowed some code).

    17
    ответ дан 3 December 2019 в 19:35
    поделиться

    Это объяснение должно содержать ответы, которые вы ищете. Обычно вам нужно объявить элемент управления на странице, а затем LoadControl в выделенном коде.

    1
    ответ дан 3 December 2019 в 19:35
    поделиться

    Я этого не пробовал, но вы можете загрузить элемент управления с помощью функции LoadControl:

    Control Example = LoadControl("~\\Controls\\MyControl.ascx");
    

    Затем вы можете попробовать визуализировать элемент управления:

    StringWriter sw = new StringWriter();
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    Example.RenderControl(htw);
    Response.Write(sw.ToString());
    Response.End();
    

    Но убедитесь, что вы переопределили VerifyRenderingInServerForm и переключите EnableEventValidation на false на странице.

    Забудьте о том, что я написал выше. Я вернулся и протестировал, и вы не можете вызвать LoadControl, потому что веб-метод статичен. Поскольку он статичен, у вас нет объекта Page для вызова ... Это означает, что пользовательские элементы управления не загружаются динамически.

    1
    ответ дан 3 December 2019 в 19:35
    поделиться

    Ответ Келтекса был единственным, что сработало для меня, так как я работал с вложенными пользовательскими элементами управления. Кроме того, если вы хотите передать параметры своему пользовательскому элементу управления, вы можете сделать это следующим образом:

    _MyNameSpace_MyUserControl viewcontrol = (_MyNameSpace_MyUserControl) pageHolder.LoadControl(path);
    
    viewcontrol.MyParam = "My value";
    
    1
    ответ дан 3 December 2019 в 19:35
    поделиться
    Другие вопросы по тегам:

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