2012-05-23 3 views
0

У меня есть приложение ASP.NET MVC, где я объявляю несколько моделей C# для своих данных. Тем не менее, я также обрабатываю данные на стороне клиента, и было бы неплохо, если бы я мог каким-то образом получить представление Java класса C#, поэтому мне не нужно повторно объявлять те же структуры данных в JavaScript. В идеале, в моем клиентском коде я бы ссылался на скрипт с именем класса в качестве параметра строки запроса и возвращал бы JS-код, определяющий конструктор для необходимого класса C#. Например.Есть ли способ легко получить представление JavaScript модели C#?

<script src="/model/get?type=Myapp.User"></script> 

Конечно, все это произойдет во время выполнения с помощью отражения.

Есть ли какие-либо существующие решения? Спасибо.

+0

В принципе, это невозможно. Существует так много услуг, языковых конструкций и несовместимости между вашим приложением и того, что может предложить JS и браузер. – cheeken

ответ

0

Вы можете возвращать экземпляры объектов как JSON, используя встроенный класс JsonResult, но для информации о типе вам нужно будет что-то построить самостоятельно (опять-таки вернувшись как JSON).

0
Json.Encode(MyObject) 

или получить newtonsofts библиотеку JSon (его лучше), он имеет много вариантов, в том числе информацию о типе, который может быть полезен для наследования.

Однако .... любые циркулярные ссылки являются проблемами. Довольно часто лучше сделать анонимный объект с минимальной структурой объектов, которая нужна вашему представлению, а затем закодировать это.

+0

Спасибо за ответ. Будет ли этот подход создавать конструктор объектов JavaScript для меня? Я сам создам объекты в JavaScript, мне не нужны существующие объекты, закодированные в Json. –

+0

это просто дает вам json, но это очень полезно ... вы можете использовать это, чтобы инициализировать свой собственный объект или делать что угодно. В качестве примера, в нокауте js, вы просто вызываете метод для сопоставления json на объект и преобразуете все json в наблюдаемые объекты в целевой объект. –