Доступ к элементам управления для макета страницы в коде позади - PullRequest
0 голосов
/ 27 сентября 2010

Я занимаюсь разработкой портала публикации в SharePoint. Макеты страниц, главные страницы разрабатываются с помощью Visual Studio, а я размещаю макеты страниц в базе данных контента с помощью wspbuilder.

У меня есть требование, при котором я должен получить доступ к элементам управления макета страницы в коде и назначить или получить значения для / из элементов управления. Но в IntelliSense VS никогда не отображаются элементы управления, используемые в макете моей страницы. Что я должен сделать, чтобы получить доступ к элементам управления, используя код позади?

Есть ли обходной путь для этого?

С уважением, Raghuraman.V

Ответы [ 2 ]

1 голос
/ 27 сентября 2010

Необходимо сделать общедоступными веб-элементы управления пользовательского элемента управления.

Вот краткий пример, показывающий, как изменить текстовое поле пользовательского элемента управления с родительской страницы:

WebUserControl1.ascx:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebApplication1.WebUserControl1" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

WebUserControl1.ascx.cs:

using System;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class WebUserControl1 : System.Web.UI.UserControl
    {
        public TextBox UserControlTextBox1
        {
            get { return TextBox1; }
            set { TextBox1 = value; }
        }

        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

WebForm1.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
<%@ Register src="WebUserControl1.ascx" tagname="WebUserControl1" tagprefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">       
        <uc1:WebUserControl1 ID="WebUserControl11" runat="server" />
    </div>
    </form>
</body>
</html>

WebForm1.aspx.cs:

using System;

namespace WebApplication1
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            WebUserControl11.UserControlTextBox1.Text = "Your text here...";
        }
    }
}
0 голосов
/ 27 сентября 2010

Полагаю, что у вас есть макеты страниц и код в двух разных проектах или, по крайней мере, в двух разных местах. Вы также можете использовать «настоящие» страницы с выделенным кодом в SharePoint, которые соседствуют с файлом ASPX, так что вам вообще не нужно повторно объявлять элементы управления.

Для этого вы можете создать проект Visual Studio для пакета WSP в виде «Веб-приложение ASP.NET», создайте страницы ASPX с файлами кода позади и используйте WSP Builder для удаления файлов C # из пакета (код все еще компилируется в сборку и развертывается вместе с ним). Трюк работает, потому что WSP Builder может быть настроен с локальным файлом конфигурации в проекте Visual Studio для удаления определенного файла типы.

Здесь локальный файл WSPBuilder.exe.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <appSettings>
  <add key="Excludefiletypes" value="cs" />
 </appSettings>
</configuration>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...