Обов'язкові властивості в користувальницькому ASP .NET Control

Я створюю користувальницький веб-контроль для моєї ASP-сторінки, яка успадковується від CompositeDataBoundControl. У мене є загальнодоступне властивість у визначенні мого контролю, яке потрібно , якщо користувач не надає цю властивість у визначенні керування на сторінці ASP, вона буде порушена, і ми отримаємо виключення. Я хочу, щоб компілятор створив попередження, подібне до того, що користувач забуває надавати властивість runat для Control.

"Перевірка (ASP.Net): елемент 'asp: button' відсутній необхідний атрибут 'runat'".

Ось головне те, що мій код виглядає:

public class MyControl : CompositeDataBoundControl, IPostBackEventHandler
{
    private string _someString;
    public string SomeString
    {
        get { return _someString; }
        set { _someString = value; }
    }

   //Other Control Properties, Functions, Events, etc.
}

Я хочу, щоб "SomeString" мав обов'язкову властивість і викидав попередження компілятора, коли будую свою сторінку.

Я спробував помістити атрибут "Обов'язковий" над властивістю, як це:

[Required]
public string SomeString
{
    get { return _someString; }
    set { _someString = value; }
}

але це, здається, не працює.

Як я можу створити таке повідомлення компілятора?

4
додано Автор Brian Mains, джерело
Я думаю, ви збираєтеся знайти, що runnat - це особливий випадок. Це сигнал до часу виконання aspnet, що розмітка повинна бути виділена як елемент керування, а також сигнал IDE, який необхідно додати до класу сторінки (або будь-якого контейнера) як поле. Зверніть увагу на цю властивість: 'btnmybutton.runnat' не існує у вашому коді.
додано Автор brian chandley, джерело
Чи є якийсь спосіб досягти того, що я прошу?
додано Автор user1018669, джерело
Роб Стівенсон-Легетт вже зв'язав мене з цим, і це не допомогло ...
додано Автор user1018669, джерело

1 Відповіді

Це дуже просто, на завантаженні сторінки ви можете перевірити, чи має властивість певне значення чи ні. Ви можете перевірити це для Null або Empty, залежно від типу вашого майна. як якщо б я маю це

private string _someString;
    public string SomeString
    {
        get { return _someString; }
        set { _someString = value; }
    }

На сторінці_load події я перевіряти, чи

if(_someString != null && _someString != "")
{ 
    String message = "Missing someString property";
    isAllPropertySet = false; //This is boolean variable that will decide whether any property is not left un-initialised
}

Все найкраще.

і, нарешті

0
додано
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug