HTML. LabelFor указанный текст

Я придумал подход, который, кажется, работает. Я сначала загружаю схему явно, затем добавляю themn к schemacollection. Затем я загружаю XML-файл и присваиваю schemacollection его свойству схем. Решение теперь похоже на это:

uses MSXML2_TLB  
That is:  
// Type Lib: C:\Windows\system32\msxml4.dll  
// LIBID: {F5078F18-C551-11D3-89B9-0000F81FE221}

function TfrmMain.ValidXML(
    const xmlFile: String; 
    out err: IXMLDOMParseError): Boolean;
var
    xml, xsd: IXMLDOMDocument2;
    cache: IXMLDOMSchemaCollection;
begin
    xsd := CoDOMDocument40.Create;
    xsd.Async := False;
    xsd.load('http://the.uri.com/schemalocation/schema.xsd');

    cache := CoXMLSchemaCache40.Create;
    cache.add('http://the.uri.com/schemalocation', xsd);

    xml := CoDOMDocument40.Create;
    xml.async := False;
    xml.schemas := cache;

    Result := xml.load(xmlFile);
    if not Result then
      err := xml.parseError
    else
      err := nil;
end;

важно использовать XMLSchemaCache40 или позже. Более ранние версии не следуют стандарту XML-схемы W3C, но только проверяют против Схемы XDR, спецификации Microsoft.

недостаток этого решения - то, что я должен загрузить схему явно. Мне кажется, что должно быть возможно получить их автоматически.

78
задан Erik Philips 19 March 2019 в 02:08
поделиться

3 ответа

Вы используете System.ComponentModel.DataAnnotations.DisplayAttribute :

[Display(Name = "My Field")]
public string MyField { get; set; }

Установка свойства ResourceType для вашего атрибута позволит вам использовать файл ресурсов .

(До .NET 4 используйте System.ComponentModel.DisplayNameAttribute с оговоркой, что отображаемое имя должно быть константой времени компиляции.)

134
ответ дан 24 November 2019 в 10:27
поделиться

Я еще не загрузил версию 2, поэтому я не могу протестировать, но считаю, что она работает как DynamicData, и в этом случае вы бы сделали что-то вроде этого на своей модели:

[Display(Name = "The Super Fantastic Field")]
public string MyField {get;set;}
3
ответ дан 24 November 2019 в 10:27
поделиться

Я еще не проверял CP1, но я прочитал его версию Скотта и, кажется, припоминаю, что код был сгенерирован T4. Я полагаю, вы всегда можете изменить это, но я подозреваю, что они будут предоставлять перегрузки в CP2.

Изменить: источник всегда доступен, и поэтому вы можете просто изменить метод, изменить генератор T4, и все будет хорошо идти. Также вставьте тикет или запрос (каким-то образом) для этого мода, чтобы он работал в следующей версии.

0
ответ дан 24 November 2019 в 10:27
поделиться
Другие вопросы по тегам:

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