Как редактировать / просматривать динамический объект в Asp.Net MVC 2 или 3? - PullRequest
1 голос
/ 18 декабря 2011

Я хочу использовать объекты, которые полностью сделаны из xml, и я хочу создать структуру представления, которая позволила бы мне редактировать / просматривать этот объект в виде asv.net mvc.

У вас есть идея, как мне это сделать?

Любая идея хороша.

Спасибо

Редактировать 1: Пример XML, но это основной, я хочу представить любые данные в этом XML, в том числе Base64 изображения

<?xml version="1.0" encoding="UTF-8"?>
<product xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
     <name xsi:nil="true"></name>
     <description>bqddd</description>
</product>

Редактировать 2: я хочу сохранить как свойства XML для объектов, каждый объект с различными свойствами. И когда я редактирую объект, я хочу иметь возможность динамически показывать разные типы интерфейсов для каждого типа объектов, которые у меня есть как xml.

Редактировать 3: Я хочу также иметь возможность изменять вид на лету без необходимости перекомпиляции, если это возможно.

Ответы [ 2 ]

2 голосов
/ 18 декабря 2011

Итак, я просто написал код, не зная, что вы хотите.

На основе вашего xml вы можете просто добавить ViewModel, например:

class Product
{
 public string Name..
 public string Description..
}

Но потом вы сказали что-то о динамичности, и есть кое-что интересное, что вы можете сделать с классом ExpandoObject .

Проверьте этот код:

void Main()
{
    XmlDynamicModel x = new XmlDynamicModel(@"path/myobject.xml");
    //you're element should be <description>value</description>
    //I would rather capitalize the first letter **Description
    Console.WriteLine(x.TheObject.description);
    Console.WriteLine(x.TheObject.name);
}
public class XmlDynamicModel
{
    public XmlDynamicModel(string xmlfile)
    {
      this.TheObject = new ExpandoObject();
      var t = this.TheObject as IDictionary<String, object>;
      XDocument xmlDoc = XDocument.Load(xmlfile);
      //get all objects UNDER product
      foreach(var elem in xmlDoc.Descendants().Descendants())
      {
        t[elem.Name.ToString()] = elem.Value.ToString();
      }
    }
    public dynamic TheObject {get;set;}
}

Вы можете сделать его более привлекательным, добавив имя объекта (в данном случае product) в качестве свойства и отыскивая различные типы, устанавливая нулевые значения и т. Д.

Надеюсь, это поможет

0 голосов
/ 18 декабря 2011

Поскольку ваш продукт может иметь несколько внутренних тегов разных типов, у вас должен быть ViewModel со свойствами метаданных ... и затем набор внутренних свойств (которые соответствуют внутренним тегам вашего XML).* Таким образом, вы можете перебирать коллекцию тегов для отображения или создания формы для редактирования.

...