Общий базовый класс для usercontrols и страниц в ASP.NET

Независимо от того, выбран ли какой-либо текст, , свойство SelectionStart представляет индекс в текст, где Вы каре сидите. Таким образом, можно использовать Строка. Вставьте для введения некоторого текста, как это:

myTextBox.Text = myTextBox.Text.Insert(myTextBox.SelectionStart, "Hello world");

6
задан salle55 22 September 2009 в 11:25
поделиться

3 ответа

Если вы используя C # 3.0, вы можете предоставить свои вспомогательные методы в качестве методов расширения для класса System.Web.UI.Control , из которых оба System.Web.UI.Page и Классы System.Web.UI.UserControl являются производными.

public static class ControlExtensions {
    public static void DoSomething(this Control obj) {
       // do something
    }
}

На странице или UserControl :

this.DoSomething();
9
ответ дан 8 December 2019 в 18:39
поделиться

Хм ... звучит как использование известных классов Helper, в основном таких классов, как

public static class StringHelper
{

    public static string Replace(...)
    {
        ...
    }

}

, и называть их как

string x = StringHelper.Replace(...);

Хотя я часто очень беспокоюсь о том, чтобы многие из этих помощников, потому что они действительно каким-то образом запоминают процедурное программирование со статическими методами в них. С другой стороны, функциональные возможности, которые вы описываете (в некоторых базовых классах, расширяющих UserControl и Page), обычно относятся к этому типу.

В этом случае я часто использую StringHelper и соответствующий StringExtender, логика которого внутри вызывает статические методы класса Helper. Таким образом, вы можете использовать функциональные возможности с новыми методами расширения C # или, как обычно, напрямую через статический класс.

в основном классы, такие как

public static class StringHelper
{

    public static string Replace(...)
    {
        ...
    }

}

, и вызывающие их, как

string x = StringHelper.Replace(...);

. Хотя я часто очень обеспокоен наличием слишком большого количества этих помощников, потому что они действительно каким-то образом запоминают процедурное программирование со статическими методами в них. С другой стороны, функциональные возможности, которые вы описываете (в некоторых базовых классах, расширяющих UserControl и Page), обычно относятся к этому типу.

В этом случае я часто использую StringHelper и соответствующий StringExtender, логика которого внутри вызывает статические методы класса Helper. Таким образом, вы можете использовать функциональные возможности с новыми методами расширения C # или, как обычно, напрямую через статический класс.

в основном классы, такие как

public static class StringHelper
{

    public static string Replace(...)
    {
        ...
    }

}

, и вызывающие их, как

string x = StringHelper.Replace(...);

. Хотя я часто очень обеспокоен наличием слишком большого количества этих помощников, потому что они действительно каким-то образом запоминают процедурное программирование со статическими методами в них. С другой стороны, функциональные возможности, которые вы описываете (в некоторых базовых классах, расширяющих UserControl и Page), обычно относятся к этому типу.

В этом случае я часто использую StringHelper и соответствующий StringExtender, логика которого внутри вызывает статические методы класса Helper. Таким образом, вы можете использовать функциональность с новыми методами расширения C # или, как обычно, напрямую через статический класс.

такие функциональные возможности, как вы их описываете (в некоторых базовых классах, расширяющих UserControl и Page), обычно относятся к этому типу.

В этом случае я часто использую StringHelper и соответствующий StringExtender, логика которого внутри вызывает статические методы Helper учебный класс. Таким образом, вы можете использовать функциональные возможности с новыми методами расширения C # или, как обычно, напрямую через статический класс.

такие функциональные возможности, как вы их описываете (в некоторых базовых классах, расширяющих UserControl и Page), обычно относятся к этому типу.

В этом случае я часто использую StringHelper и соответствующий StringExtender, логика которого внутри вызывает статические методы Helper учебный класс. Таким образом, вы можете использовать функциональные возможности с новыми методами расширения C # или, как обычно, напрямую через статический класс.

1
ответ дан 8 December 2019 в 18:39
поделиться

У меня точно такая же проблема. Вот мое решение.

Я определил пустой интерфейс

public interface ISecurableWebObject
    {
    }

Затем я определил класс, у которого есть методы расширения для интерфейса выше

public static class ISecurableWebObjectExtender
    {
        public static bool ExtensionMetotX(this ISecurableWebObject obj)
        {
            return ...;
        }
    }

Я унаследовал ISecurableWebObject в классах Page и WebUserControl, поэтому дублируемое определение исчезло.

 public partial class UcExample : System.Web.UI.UserControl, ISecurableWebObject
    {
        protected void Page_Load(object sender, EventArgs e)
        {
             if(this.ExtensionMetotX() == true)
             { ... }
        }
    }
3
ответ дан 8 December 2019 в 18:39
поделиться
Другие вопросы по тегам:

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