Pregunta

  1. ¿El uso de MVC activar los controles de Telerik con ASP.NET MVC viola el modelo MVC?

  2. Y si no, ¿qué tipo de rendimiento HIT (en comparación con las características y la velocidad de desarrollo) habrá con el uso Telerik controles sobre manualmente la codificación del HTML?

¿Fue útil?

Solución

Puesto que soy la persona que construyó demostración de que creo que puedo compartir mi opinión también. Esta aplicación de ejemplo no viola los principios MVC en mi opinión. RadControls no se basan en ViewState o devoluciones de datos en aplicaciones MVC (se puede comprobar la salida generada a ver por sí mismo - no __doPostBack o __VIEWSTATE). De hecho tiene que escribir algo de código para enlazar la red o llenar el menú - pero aún así el código de la Vista (ASPX) y está totalmente relacionada con la presentación (de nuevo esto es sólo mi opinión por lo que podría estar equivocado)

También debería mencionar que hay algunas limitaciones en efecto - algunas de las características incorporadas (que dependen de la devolución de datos) no funcionan en MVC. Sin embargo funcionará en su resolución. Siéntase libre para abrir un ticket de soporte o hilo del foro en caso de tener alguna pregunta en particular con respecto a RadControls y ASP.NET MVC.

Otros consejos

Para su segunda pregunta, respecto al rendimiento golpe contra la codificación manual, creo que depende del control que está utilizando. Por ejemplo, si se utiliza cualquiera de los controles de navegación Telerik en MVC- tales como menús, TabStrip, o PanelBar- se ahorrará una tonelada de codificación manual (desde un menú / barra de pestañas / etc. Requiere mucho del lado del cliente código para proporcionar las características interactivas (como desplegables opciones) y un montón de CSS complejo). Por lo tanto, los RadControls en MVC ayudará a restaurar el - la productividad -. Le utilizan a la hora de construir aplicaciones ricas ASPNET

Para los controles más complejos, como la rejilla, que dependen en gran medida de las devoluciones de datos, que está beneficiando principalmente del estilo proporcionada. Para ajustar el modelo MVC, como los controles de la cuadrícula requieren un poco de "costumbre" codificación "convertir" a los eventos de devolución a URL acciones, por lo que no pueden ahorrar una gran cantidad de código frente a una plantilla de rejilla MVC. Usted -will- guarda un montón de tiempo en el estilo, sin embargo, y la diferencia de rendimiento debe ser negligble.

Espero que ayude.

-Todd

Estoy bastante seguro de que éstos se basan en el modelo de devolución de datos en formularios Web y no serían compatibles con vistas MVC. Probablemente se podría encontrar una manera para que funcionen, pero no estaría de acuerdo con los principios MVC. Usted puede mezclar / WebForms partidos con MVC Vistas en el mismo sitio web, si es necesario, pero yo no lo recomendaría.

Lo que se pierde mediante el uso de los controles de Telerik son la mayor parte de los beneficios de la MVC: clara separación de las preocupaciones, el aumento de la capacidad de prueba, más delgado HTML, una arquitectura más limpio. No me sorprendería encontrar que con el tiempo Telerik sale con controles para MVC. Por ahora, me vería en cualquiera de las implementaciones de Javascript puros para el lado del cliente o ViewUserControls de codificación manual, si es necesario reutilizar algunos componentes comunes.

En lo personal, yo no usaría los controles Telerik actuales con MVC. Creo que funcionan en algunas situaciones ( http: // telerikwatch.com/2009/01/telerik-mvc-demo-app-now-available.html ), pero creo que son bastante estado de vista / devolución de datos céntrica. Sabiendo telerik, que va a salir con una versión compatible MVC, pero parece que tienen una gran cantidad de trabajo delante de ellos ...

Me di cuenta que es una vieja pregunta, pero Telerik de controles ASP.NET MVC son simplemente controla, como datepickers, rejillas, panelbars, TabStrips. Estos no están en rival de la MVC marco . Trabajan conjuntamente ella. Su pregunta me dice que no lo hace, o al menos qué no, entienda lo MVC realmente es.

Para obtener el beneficio de otros que pueden confundirse, además, MVC significa Modelo-Vista-Controlador . Hay un Modelo , que representa los objetos que está utilizando para almacenamiento o recuperación de valores, una Ver , que muestra los valores de los objetos y se puede utilizar para ponerlos a través del uso de < em> controles , como datepickers de Telerik, rejillas, y tal, y el controlador , que alberga las funciones que hacen que los puntos de vista e interactúa con los elementos del modelo. Los controles se utilizan para actualizar el modelo debe ser capaz de interactuar con ese modelo MVC para ser compatible. Si no lo hacían, no podían ser objeto de publicidad como controles MVC, en primer lugar, de modo que sí, sus controles funcionan con, y no "viola", el marco MVC.

Aquí es un tal uso de un control selector de fechas, en conjunto con un modelo:

VER:

@model MyViewModel

<%= Html.Kendo().DateTimePickerFor(model => model.ExpirationDate)
    .Name("datetimepicker")
    .Value(model.ExpirationDate)        
%>

modelo de vista: (o modelo)

public MyViewModel() {
    public DateTime ExpirationDate { get; set; }
}

CONTROLADOR:

public ActionResult Index(int id)
{
    var data = dataContext.SomeTable.Where(e => e.ID == id).FirstOrDefault();
    // return View(data); // this would allow you to use @model SomeTable 
    // in your view, and not require a ViewModel, but returns the whole 
    // record for the given ID

    // ViewModels allow you flexibility in what you return
    MyViewModel mvm = new MyViewModel();
    mvm.ExpirationDate = data.ExpirationDate;
    return View(mvm);
}

Para codificar utilizando demostraciones de Telerik, que es un montón de copiar / pegar y varios pequeños cambios para su modelo y los datos que están entrando específica (como se muestra arriba). También hay mucho menos código a causa de los controles tienen la mayoría de todo incorporado, así que por supuesto el tiempo de producción se corta hasta abajo, cosas como el filtrado, la paginación, clasificación en rejillas ya está ahí - se enciende sólo mediante la adición digamos, Filterable(), para el filtrado. En lugar de tener que crear, por ejemplo, DataColumns individuales y agregarlos a un DataTable, a continuación, unirse a una red que, a continuación, se preocupe por OnDataBound eventos individuales (que todavía se podía hacer, pero necesita menos), se instancia una cuadrícula, añadir sus columnas, establecer sus funciones de controlador para crear, leer, actualizar y eliminar elementos, y establecer las propiedades de la parrilla, y ya está:

<%: Html.Kendo().Grid<Models.ViewModels.MyViewModel>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(c => c.ExpirationDate).Format("MM/DD/YYYY");
    })
    .HtmlAttributes(new { style = "height: 380px;" })
    .Scrollable()
    .Sortable()
    .Filterable()
    .Pageable(pageable => pageable
        .Refresh(true)
        .PageSizes(true)
        .ButtonCount(5))
    .DataSource(dataSource => dataSource
        .Ajax()
        .Read(read => read.Action("Customers_Read", "Grid"))
        .Create(create => create.Action("Customers_Create", "Grid"))
        .Update(update=> update.Action("Customers_Update", "Grid"))
        .Delete(delete => create.Action("Customers_Delete", "Grid"))
    )
 %>

El "leer" es tan simple como tomar las 2 primeras líneas en el public ActionResult Index() arriba y ponerlos en una función que devuelve public Customers_Read([DataSourceRequest] DataSourceRequest request) {} data como .ToDataSourceResult(). La actualización es similar a las últimas 3 líneas en esa función, ya que se ejemplariza el modelo, copie los valores del modelo que se pasa de la red, a continuación, hacer algo como dataContext.SaveChanges() guardar. Una vez guardado, la red automáticamente hace otra lectura, por lo que ver más valores. No hay necesidad de ninguna otra cosa para correr en la devolución de datos para volver a vincular los datos, así que no hay más código para escribir.

Basta con mirar a los ejemplos de código aquí para dar una mejor idea: http: //demos.telerik. com / Red PEA-mvc /

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top