Должны ли пользовательские элементы управления быть размещены в App_Code? - PullRequest
1 голос
/ 17 марта 2012

Я написал собственный элемент управления, унаследованный от WebControl. (Примечание: не пользовательский элемент управления).

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;

namespace Taopi.WebComponents
{
    public class RatingLabel : WebControl
    {
        public RatingLabel()
            : base("span")
        {        }
        //...

Я поместил его в /App_Code, и на веб-странице он зарегистрирован и используется следующим образом:

<%@ Register TagPrefix="uc" Namespace="Taopi.WebComponents" %>
...
<uc:RatingLabel Rating='<%# Eval("rating") %>' runat="server" />

Они работают хорошо, пока я не переместу RatingLabel на /Components, то есть папку, созданную мной. При попытке запустить веб-сайт я получил сообщение " Неизвестный тег сервера uc: RatingLabel ".

Я считаю, что регистрация неверна, так что нужно изменить? Должны ли пользовательские элементы управления быть помещены в App_Code?

У меня есть еще один вопрос: где вы обычно размещаете свои пользовательские элементы управления (кроме ссылки на внешнюю DLL)? Есть ли «предложенные» места?

1 Ответ

0 голосов
/ 17 марта 2012

Я сталкивался с этим раньше. Единственный способ, которым я нашел, что вы можете хранить код вне папки AppCode, это добавить проект «Библиотека классов» или внешнюю DLL, как вы предложили (что, во всяком случае, является моим предпочтительным подходом, так как он предлагает использование в нескольких проектах).

В качестве альтернативы, если вы используете тип проекта «Веб-приложение» вместо проекта «Веб-сайт», вы можете хранить код где угодно.

...