Frage

Ich bin ziemlich neu in Telerik MVC-Erweiterungen. Ich habe meine erste Instanz in einer Ansicht erfolgreich umgesetzt. Ich bin nicht meine zweite Ansicht der Umsetzung des Telerik MVC Grid verwenden, aber die Klasse, die an das Netz gebunden wird hat zwei Spalten, die vom Typ Nullable sind. Wenn ich meinen Code ausführen, aus einem Fehler der Ansicht Spieße wie folgt:

Das Modellelement in das Wörterbuch übergeben ist null, aber dieses Wörterbuch erfordert einen nicht-null Modell Artikel vom Typ ‚System.DateTime‘.

Ich habe gedacht, könnte dies ein Rendering Problem mit einer Vorlage, die nur mit Datetime und nicht der Nullable funktioniert, aber dann aus nahm ich total alle Spalten diese Datatime angezeigt wird? Eigenschaften.

Mein Code ist wie folgt:

Code für Telerik MVC Grid

<%= Html.Telerik().Grid(Model.ScheduledCourseList)
.Name("ScheduledCoursesGrid")
.ToolBar(commands => commands.Insert().ButtonType(GridButtonType.Image).ImageHtmlAttributes(new { style = "margin-left:0" }))
.DataKeys(keys => keys.Add(sc => sc.Id))
.DataBinding(dataBinding =>
    dataBinding.Ajax()
        .Select("_List", "Course")
        .Insert("_InsertAjax", "Course")
        .Update("_UpdateAjax", "Course")
        .Delete("_DeleteAjax", "Course")
)
.Columns(columns =>
{
    columns.Bound(c => c.Id).Width(20);
    //columns.Bound(c => c.ScheduledDateTime).Width(120);
    //columns.Bound(c => c.Location).Width(150);
    columns.Command(commands =>
    {
        commands.Edit().ButtonType(GridButtonType.Image);
        commands.Delete().ButtonType(GridButtonType.Image);
    }).Width(180).Title("Commands");
})
.Editable(editing => editing.Mode(GridEditMode.PopUp))
.Sortable()
.Footer(true) %>

DTO

    public class ScheduledCourseDTO
{
    public int Id { get; set; }
    public int CourseId { get; set; }
    public int CourseProviderId { get; set; }
    public DateTime? ScheduledDateTime { get; set; }
    public DateTime? EndDateTime { get; set; }
    public string Location { get; set; }
    public int SiteId { get; set; }

    public decimal CostBase { get; set; }
    public decimal CostPerAttendee { get; set; }
    public decimal PricePerAttendee { get; set; }
    public int MaxAttendees { get; set; }
    public int CancellationDays { get; set; }

    public bool Deleted { get; set; }
}

Hat jemand eine Idee, wie ich dieses Problem lösen kann?

War es hilfreich?

Lösung

ich es geschafft, die Lösung dieses Problems auf den Telerik-Foren zu finden. Wenn jemand anderes dieses Problem auftritt, überprüfen Sie die folgenden Threads aus:

http: //www.telerik.com/community/forums/aspnet-mvc/grid/problem-with-nullable-datetime-property.aspx#1423387 Kurz gesagt, ist die Lösung, dass Sie ein EditorTemplates Ordner in Ihrem Views / Shared-Ordner Ihres ASP.NET MVC-Projekt haben sollte. Dieser EditorTemplates Ordner wird von Telerik hinzugefügt. In diesem Ordner gibt es eine Vorlage Ansicht DateTime.ascx welche erbt von System.Web.Mvc.ViewUserControl genannt. Das Problem ist, dass die Vorlage eine normale Datetime erwartet. Um es zu beheben, ändern Sie es eine Nullable-Datetime zu erwarten wie folgt:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime?>" %>

Dies löst das Problem.

Andere Tipps

Sie müssen auch alle (nicht-nullable) Vorlagen löschen Sie vor für den Datetime, um gehabt haben können? Vorlage sein Hit.

System.Web.Mvc.ViewUserControl<System.DateTime>

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