powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Пользовательские контролы
6 сообщений из 6, страница 1 из 1
Пользовательские контролы
    #37438829
Dezmond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я скоро сойду с ума!) От того, что не понимаю логики ASP.NET-а.

Проект ASP.NET 4, IDE - Visual Studio Team System 2008, ОС - Win7 x64
Стоит задача добавить пользовательский контрол и добавить его на веб-форму. Делаю по примеру из книги.
Привожу все до строчки, так как где-то тут и зарыта собака))
Код ascx-файла:
Код: plaintext
1.
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Control_ProductDetails.ascx.cs" Inherits="Store.Interface.Controls.Control_ProductDetailsClass" %>
Код соответствующего класса (он пустой, весь код удален для чистоты эксперимента):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Store.Interface.Controls
{
    public partial class Control_ProductDetailsClass : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

    }
}

Страница, к которой подключаю контрол:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<%@ Page Language="C#" MasterPageFile="~/Main.master" AutoEventWireup="true" CodeFile="ListProducts.aspx.cs" Inherits="Store.Interface.ListProducts" Title="Dr. Wizard - Товары"%>
<%@ MasterType VirtualPath="~/Main.master" %>
<%@ Register Src="../Controls/Control_ProductDetails.ascx" TagName="Control_ProductDetails" TagPrefix="wiz" %>
<asp:Content ID="MainContent" ContentPlaceHolderID="MainContent" Runat="Server">
    <div class="sectiontitle">Каталог продуктов</div>
   <p><wiz:Control_ProductDetails />
   </p>
</asp:Content>

На этом этапе все нормально, но как только добавляю в ascx-файл разметку - все летит прахом.
Код, который добавляю:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
<asp:Literal runat="server" ID="lblDepartmentPicker"><small><b>Отобрать по разделу:</b></small></asp:Literal> 
<asp:DropDownList ID="ddlDepartments" runat="server" AutoPostBack="True" DataSourceID="objAllDepartments"  Width="220px"
   DataTextField="Title" DataValueField="ID" AppendDataBoundItems="true" OnSelectedIndexChanged="ddlDepartments_SelectedIndexChanged">
   <asp:ListItem Value="0">Все разделы</asp:ListItem>   
</asp:DropDownList>
<asp:ObjectDataSource ID="objAllDepartments" runat="server" SelectMethod="GetDepartments"
   TypeName="MB.TheBeerHouse.BLL.Store.Department"></asp:ObjectDataSource>
<asp:Literal runat="server" ID="lblSeparator">   </asp:Literal>
<asp:Literal runat="server" ID="lblPageSizePicker"><small><b>Товаров на странице:</b></small></asp:Literal> 
<asp:DropDownList ID="ddlProductsPerPage" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlProductsPerPage_SelectedIndexChanged">
   <asp:ListItem Value="5"> 5 </asp:ListItem>
   <asp:ListItem Value="10" Selected="True"> 10 </asp:ListItem>
   <asp:ListItem Value="25"> 25 </asp:ListItem>
   <asp:ListItem Value="50"> 50 </asp:ListItem>   
   <asp:ListItem Value="100"> 100 </asp:ListItem>
</asp:DropDownList>      
<p></p>
<asp:GridView ID="gvwProducts" runat="server"  AllowPaging="True" AutoGenerateColumns="False"
   DataKeyNames="ID" DataSourceID="objProducts" PageSize="10" AllowSorting="True"
   EmptyDataText="<b>Нет продуктов для показа в выбранном разделе</b>" OnRowCreated="gvwProducts_RowCreated">
   <Columns>
      <asp:ImageField DataImageUrlField="SmallImageUrl" ItemStyle-Width="110px" />     
      <asp:HyperLinkField HeaderText="Product" SortExpression="Title" HeaderStyle-HorizontalAlign="Left"
         DataTextField="Title" DataNavigateUrlFormatString="~/ShowProduct.aspx?ID={0}" DataNavigateUrlFields="ID" />
           <asp:TemplateField HeaderText="Available" SortExpression="UnitsInStock" ItemStyle-HorizontalAlign="Center">
         <ItemTemplate>
         </ItemTemplate>         
      </asp:TemplateField>
      <asp:TemplateField HeaderText="Price" SortExpression="UnitPrice" HeaderStyle-HorizontalAlign="Right">
      </asp:TemplateField>
      <asp:TemplateField ItemStyle-HorizontalAlign="Center" ItemStyle-Width="20px">
         <ItemTemplate>
            <asp:HyperLink runat="server" ID="lnkEdit" ToolTip="Редактировать товар"
               NavigateUrl='<%# "~/Admin/AddEditProduct.aspx?ID=" + Eval("ID") %>' ImageUrl="~/Images/edimg.jpg" />
         </ItemTemplate>         
      </asp:TemplateField>
      <asp:CommandField ButtonType="Image" DeleteImageUrl="~/Images/delimg.jpg" DeleteText="Удалить товар" ShowDeleteButton="True">
         <ItemStyle HorizontalAlign="Center" Width="20px" />
      </asp:CommandField>
   </Columns>   
   <EmptyDataTemplate><b>Нет продуктов для показа</b></EmptyDataTemplate>   
</asp:GridView>
<asp:ObjectDataSource ID="objProducts" runat="server" DeleteMethod="DeleteProduct" SortParameterName="sortExpression"
   SelectMethod="GetProducts" SelectCountMethod="GetProductCount" EnablePaging="True" TypeName="MB.TheBeerHouse.BLL.Store.Product">
   <DeleteParameters>
      <asp:Parameter Name="id" Type="Int32" />
   </DeleteParameters>
   <SelectParameters>      
      <asp:ControlParameter ControlID="ddlDepartments" Name="departmentID" PropertyName="SelectedValue" Type="Int32" />
   </SelectParameters>
</asp:ObjectDataSource>

После добавления кода в контрол тег <wiz:Control_ProductDetails /> подсвечивается и IDE начинает писать unknown tag.

Я долго шел к пониманию этого)) В смысле путем долгих и нудных экспериментов я установил, что 2 абсолютно одинаковых контрола (в одном нэймспейсе, объявленные сходным образом, добавленые на страницу одинаково) могут - один работать, а один нет из-за кода в них! Для меня просто непостижимо, что сигнатура у них одинакова, базовые классы тоже, какая вообще разница что там внутри??? Тем более, что ошибок там не подсвечивается, все вроде корректно.

P.S. Объявление префксного тега в web.config так и не заработало, как ни бился. Работает только через <%@ Register.

Помогите, а то скоро меня увезут люди в белых халатах))

Могут ли быть какие-то конфликты? У меня еще установлен Ajax Control Toolkit 3.5
...
Рейтинг: 0 / 0
Пользовательские контролы
    #37438836
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dezmond,

1.
<wiz:Control_ProductDetails runat="server" ID="Control_ProductDetails1"/>
2.
лучше указывать
<%@ Register Src="~/Controls/Control_ProductDetails.ascx" TagName="Control_ProductDetails" TagPrefix="wiz" %>
...
Рейтинг: 0 / 0
Пользовательские контролы
    #37438944
Dezmond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZoriaDezmond,

1.
<wiz:Control_ProductDetails runat="server" ID="Control_ProductDetails1"/>
2.
лучше указывать
<%@ Register Src="~/Controls/Control_ProductDetails.ascx" TagName="Control_ProductDetails" TagPrefix="wiz" %>

Переделал все, как вы сказали, теперь пишет другое при добавлении кода:

авторWarning 1 Element 'Control_ProductDetails' is not a known element. This can occur if there is a compilation error in the Web site, or the web.config file is missing. C:\inetpub\ASP.NET Portal\ListProducts.aspx

При пустом ascx-файле опять же -все нормально.
...
Рейтинг: 0 / 0
Пользовательские контролы
    #37439000
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dezmond,

начните с простого.
добавили в проект новый UserControl, пустой, скомпилировали проект, запустили.
поместили UserControl на страницу, скомпилировали проект, запустили.
поместили код на страницу, скомпилировали, запустили?
осталось всего лишь перенеслти код в юзер контрол :)
...
Рейтинг: 0 / 0
Пользовательские контролы
    #37439002
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проект не будет работать, если хотя бы один из компонентов не компилируется. что у вас, судя по всему происходит.
...
Рейтинг: 0 / 0
Пользовательские контролы
    #37439201
Dezmond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zoriaпроект не будет работать, если хотя бы один из компонентов не компилируется. что у вас, судя по всему происходит.

Спасибо, так оно по сути и оказалось - из-за ошибок в коде самого контрола он и не хотел объявляться.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Пользовательские контролы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]