Cómo crear un editor para una cadena que contiene una clase serializada en MVC3
Frecuentes
Visto 179 equipos
0
Tengo una propiedad de cadena en mi ViewModel que contiene una representación serializada de una de las diez clases posibles, cada clase es muy diferente, por lo que no hay una clase base para ellas.
public string Configuration { get; set; }
public string ConfigurationType { get; set;}
Idealmente, me gustaría crear una plantilla de editor diferente para cada una de las clases que podrían deserializarse en la propiedad y simplemente tener
<%= Html.EditorFor(l => l.Configuration)%>
Donde de alguna manera podría informar a mvc que la configuración debe deserializarse en un objeto de ConfigurationType para que use la plantilla correcta y luego deserializarse nuevamente a una cadena.
Aprecio que soy ligero en los detalles aquí, pero me gustaría mantener las cosas lo más abstractas posible para no enturbiar demasiado las aguas.
1 Respuestas
0
Creo que probablemente debería considerar abordar el problema en cuestión de manera diferente. No conozco los detalles de su problema, pero a partir de la información que ha proporcionado, creo que la siguiente podría ser una solución factible:
- Créar un
ConfigurationBase
class que contiene las propiedades comunes de las 10 clases. - En lugar de tener el
Configuration
la propiedad sea del tipoString
, que sea genérico, es decir:T
. En consecuencia, su modelo de vista también debe ser un tipo genérico, donde el parámetro de tipo debe estar restringido aConfigurationBase
ynew()
(porque debe ser serializado/deserializado). - Ahora que su clase es genérica, no necesita el
ConfigurationType
propiedad, así que elimínela. - Cree un editor para cada subclase de
ConfigurationBase
. - Opcionalmente, puede crear un método en su modelo de vista que serialice la instancia de configuración en un
String
si eso es realmente necesario.
Verifique el código a continuación:
public class MyViewModel<T> where T : ConfigurationBase, new()
{
public T Configuration {get; set; }
public String SerializeConfiguration()
{
//return the serialized this.Configuration
}
}
Respondido 28 Jul 12, 22:07
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas asp.net-mvc-3 polymorphism editorfor or haz tu propia pregunta.