Frage

  1. Wird mit MVC Telerik Kontrollen aktiviert mit ASP.NET MVC verletzt das MVC-Modell?

  2. Und wenn nicht, welche Art von Leistung Hit (im Vergleich zu Funktionen und Entwicklungsgeschwindigkeit) wird es bei der Verwendung von Telerik steuert über manuell Codierung der HTML?

War es hilfreich?

Lösung

Da ich die Person bin, die diese Demo gebaut Ich glaube, ich meine Meinung auch teilen kann. Diese Beispielanwendung nicht gegen die MVC Prinzipien, nach mir. RadControls verlassen sich nicht auf Viewstate oder Postbacks in MVC-Anwendungen (Sie die generierte Ausgabe für sich selbst überprüfen, kann - kein __doPostBack oder __VIEWSTATE). Tatsächlich müssen Sie einige Codes schreiben, um das Raster zu binden oder das Menü füllen - aber immer noch der Code in der Ansicht (ASPX) und ist vollständig mit der Präsentation im Zusammenhang (auch dies ist nur meine Meinung so ich falsch sein könnte)

Ich sollte auch erwähnen, dass es einige Einschränkungen in der Tat sind - einige der integrierten Funktionen (die auf Postbacks verlassen) nicht in MVC arbeiten. Allerdings wird auf die Lösung ihnen zu arbeiten. Sie können ferner ein Support-Ticket oder Foren-Thread zu öffnen, sollten Sie spezielle Fragen in Bezug auf RadControls und ASP.NET MVC haben.

Andere Tipps

Um Ihre zweite Frage in Bezug auf Performance-Einbußen vs. manuelle Codierung, ich denke, es auf der Steuerung ab, die Sie verwenden. Zum Beispiel, wenn Sie eine der Telerik Steuerelemente für die Navigation in MVC wie Menü verwenden, TabStrip oder PanelBar- befinden Sie sich eine Tonne manueller Codierung speichern (da ein Menü / Tabstrip / etc. Erfordert viele Client-Seite Code, um die interaktiven Funktionen zur Verfügung zu stellen (wie Drop-Down-Optionen) und eine Menge komplexer CSS). So helfen die RadControls in MVC wiederherstellen die - Produktivität -. Sie gewohnt sind, wenn die Erstellung von Rich ASPNET Apps

Für komplexere Steuerungen, wie das Gitter, die viel auf Postbacks abhängen, Sie profitieren vor allem von der mitgelieferten Styling. Um das MVC-Modell zu passen, Steuerelemente wie Grid benötigen ziemlich viel „custom“ Codierung „convert“ Postback Ereignisse Aktionen URL, so dass Sie möglicherweise nicht viel Code im Vergleich zu einem MVC Raster Vorlage speichern. Sie -will- viel Zeit auf Styling sparen, aber, und der Leistungsunterschied sollte negligble sein.

Ich hoffe, das hilft.

-Todd

Ich bin mir ziemlich sicher, dass diese in WebForms auf dem Postback Modell verlassen und würden nicht mit MVC Ansichten kompatibel sein. Sie könnten wahrscheinlich einen Weg für sie arbeiten finden, aber es wäre nicht mit den MVC Prinzipien zu halten. Sie können / match WebForms mischen mit MVC Ansichten in der gleichen Website, wenn nötig, aber ich würde es nicht empfehlen.

Was Sie mit den Telerik Kontrollen verlieren sind die meisten Vorteile von MVC: klare Trennung von Bedenken, verbesserte Testbarkeit, schlanker HTML, eine saubere Architektur. Es würde mich nicht überraschen, zu finden, dass schließlich Telerik mit Kontrollen für MVC kommt. Denn jetzt, würde ich entweder reine Javascript-Implementierungen für die Client-Seite oder per Hand codierte ViewUserControls aussehen, wenn Sie einige gemeinsame Komponenten wieder zu verwenden müssen.

Persönlich würde ich nicht die aktuellen Telerik Kontrollen mit MVC verwenden. Ich denke, sie in einigen Situationen arbeiten ( http: // telerikwatch.com/2009/01/telerik-mvc-demo-app-now-available.html ), aber ich denke, sie sind ziemlich Ansichtszustand / Postbacks centric. Zu wissen, Telerik, werden sie mit einer MVC-kompatible Version herauskommen, aber sehen aus wie sie eine Menge Arbeit vor sich haben ...

Ich weiß, dies ist eine alte Frage, aber Telerik ASP.NET MVC Kontrollen einfach sind steuert, wie Kalenderwerkzeug, Gitter, panelbars, Tabstrips. Diese sind nicht in Konkurrenz zu dem MVC Rahmen . Sie arbeiten in Verbindung mit es. Ihre Frage sagt mir, Sie dies nicht tun, oder zumindest hat nicht, verstehen, was MVC wirklich ist.

Für das Wohl des anderen, das verwechselt werden kann, als auch, steht MVC für Model-View-Controller-. Es gibt ein Modell , dass Objekte repräsentiert, die Sie für die Speicherung oder den Abruf von Werten verwenden, ein Ansicht , die diese Objektwerte angezeigt und können sie durch die Verwendung eingestellt werden < em> Kontrollen , wie Telerik Kalenderwerkzeug, Gitter, und so, und die Controller , das die Funktionen beherbergt, die die Ansichten und interagiert mit den Modellelementen machen. Die Steuerelemente, die Sie für die Aktualisierung des Modells verwenden muss in der Lage sein, mit diesem Modell zu interagieren MVC-konform zu sein. Wenn sie es nicht tun, können sie nicht als MVC Kontrollen geworben werden, in erster Linie, also ja, ihre Kontrollen arbeiten mit, und nicht „verletzen“, den MVC-Framework.

Hier ist eine solche Verwendung einer Datepicker Kontrolle, in Verbindung mit einem Modell:

:

@model MyViewModel

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

Ansichtsmodell: (oder Modell)

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

REGLER:

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);
}

Für die Kodierung sie Telerik Demos verwenden, es ist eine Menge Kopieren / Einfügen und verschiedene kleine Änderungen für Ihr spezifisches Modell und Daten, die Sie eingeben (wie oben dargestellt). Es gibt auch viel weniger Code wegen der Kontrollen haben die meisten alles eingebaut, so natürlich die Produktionszeit Weg nach unten geschnitten wird, Dinge wie Filterung, Paging, Sortieren in Gitter bereits vorhanden ist - Sie ihn einschalten nur durch Zugabe von etwa Filterable(), für die Filterung. Anstelle von, sagen wir, individuelle Datacolumns erstellen zu müssen und diese in einem Datatable, dann ist das Binden an ein Gitter, sorgen dann über einzelne OnDataBound Ereignisse (die Sie noch tun können, aber brauchen weniger), können Sie ein Gitter instanziiert, fügen Sie Ihre Spalten, stellen Sie Ihre Controller-Funktionen zum Erstellen, Lesen, Aktualisieren und Löschen von Elementen, und legen Sie alle Eigenschaften auf dem Gitter, und Sie sind fertig:

<%: 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"))
    )
 %>

Die „lesen“ ist so einfach wie diese ersten zwei Zeilen in der public ActionResult Index() oben zu nehmen und sie in eine public Customers_Read([DataSourceRequest] DataSourceRequest request) {} Funktion setzen, die data als .ToDataSourceResult() zurückgibt. Eine Aktualisierung ist ähnlich wie bei den letzten drei Zeilen in dieser Funktion, da Sie das Modell instanziiert, die Werte aus dem Modell kopieren, die in aus dem Netz übergeben wird, dann so etwas wie dataContext.SaveChanges() zu speichern. Einmal gespeichert, funktioniert das Gitter automatisch ein anderes zu lesen, so wird es die neuesten Werte sehen. Keine Notwendigkeit für irgendetwas anderes auf Postbacks ausführen, um die Daten erneut zu binden, so dass nicht mehr Code zu schreiben.

Gerade in den Codebeispielen hier eine bessere Vorstellung zu geben: http: //demos.telerik. com / aspnet-mvc /

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top