2010-03-17 2 views
4

Я создаю ASP.NET Server Control с ассоциированным API на стороне клиента.ScriptControlDescriptor.AddProperty & Только для чтения Свойства

В моих GetScriptDescriptors() метод я ассоциирование свойства «строка» ...

descriptor.AddProperty("rows", this.IntRows); 

В моей стороне клиента API я хочу, чтобы моя собственность «строка», чтобы быть только для чтения .. .

MyControl = function(element) 
{ 
    MyControl.initializeBase(this, [element]); 
    this._rows; 
} 

MyControl.prototype = 
{ 
    initialize: function() 
    { 
     MyControl.callBaseMethod(this, 'initialize'); 
    }, 

    get_rows: function() 
    { 
     return this._rows; 
    }, 

    dispose: function() 
    { 
     MyControl.callBaseMethod(this, 'dispose'); 
    } 
} 

Однако это приводит следующее сообщение об ошибке ...

Error: Sys.InvalidOperationException: 'rows' is not a writable property.

следующая сеттер, кажется, требуется или дер за $ создать заявление для назначения «строки» это начальное значение:

set_rows: function(value) 
{ 
    this._rows = value; 
}, 

Как я могу сделать свойство «строка» только для чтения в стороне клиента API, если связующий требуется присвоить значение из вызов AddProperty?

ответ

0

Простейший способ заключается в том, чтобы set_rows игнорировал любой ввод. Эффективно это должно полностью исключить исключение и по-прежнему предоставлять функции «Только для чтения» для свойства.

set_rows: function(value) 
{ 
    value = null; 
}, 
+0

Спасибо за ответ. У меня еще не было возможности проверить его. Однако я не уверен, что следую примеру. Разве это не просто очистит значение «строк», если был вызван сеттер? –

+0

@Poz Это правильно. Я установил неверную опцию null. Другой альтернативой было бы выбросить не реализованное исключение, однако это должно быть обработано кодером. Скорее просто молча игнорируйте набор. – BinaryMisfit

+0

Спасибо за разъяснение. –

Смежные вопросы