2013-01-17 23 views
9

Mam witrynę dynamicznych danych Asp.Net 4.0 z kontekstem danych LINQ do SQL. Jedną z kolumn w bazie danych SQL Server jest NVARCHAR (MAX) i zawiera fragment XML. Zmapowałem to do XElement w pliku .dbml. Dodałem metadane dla klasy z interfejsem użytkownika dla tej właściwości i napisałem szablon pola niestandardowego, który pokazuje zawartość XML w TreeView. Podobnie jak How to edit a SQL Server XML data field with asp.net Dynamic DataSzablon pola do edytowania typów danych XElement w dynamicznych danych Asp.Net

Teraz chciałbym edytować pole danych. Prosty edytor tekstu zrobi to, więc pomyślałem, że skopiuję szablon pola MultiLine_Edit. Na stronie edycji rzeczywiście się wyświetla i mogę edytować zawartość. Ale to podejście okazuje się nieco zbyt proste, ponieważ kiedy naciśniemy aktualizację, na górze strony pojawi się czerwony List of validation errors: The value is not valid.. Skomentowałem DynamicValidator, ale teraz dostaję ServerError zamiast tego, że nie może zapisać moich zmian, ponieważ nie uda mi się przekonwertować moich zmian z String do XElement.

Znalazłem old post on the asp.net forums from someone trying to do the same thing, ale nie pokazuje rozwiązania.

Moje pytanie brzmi: Jak powinien wyglądać mój szablon pola XML_Edit?

+0

Jedyny sposób, w jaki mogę to osiągnąć, to zmienić typ w pliku .dbml na ciąg. Główną przyczyną wydaje się być to, że XElement nie jest Serializable i dlatego nie może być umieszczony w ViewState. Widziałem sugestię dodawania TypeConverter, ale nie wiem jak to zrobić. – flup

Odpowiedz

0

LINQ do SQL i dane dynamiczne nie grają razem.

Nie zamapuj zawartości XML na XElement. Zamiast tego zamień go na ciąg.

Możesz używać niestandardowych szablonów pól, ale dobrze je bazuj na łańcuchach.

1

Spróbuj użyć zamiast tego typu XDocument, który można serializować.

+0

Niestety, XDocument również nie jest możliwy do serializacji. Mają metody ToString. – flup