Domanda

Sono abbastanza nuovo per le estensioni Telerik MVC. Ho implementato il mio primo esempio, in una vista con successo. Non sono l'attuazione mia seconda vista usando Telerik MVC griglia, tuttavia la classe che viene vincolata alla griglia ha 2 colonne che sono di tipo Nullable. Quando eseguo il mio codice, la vista sputa fuori un errore come segue:

La voce del modello passato nel dizionario è nullo, ma questo dizionario richiede un elemento del modello non nullo di tipo 'System.DateTime'.

Ho inizialmente pensato che questo potrebbe essere un problema di rendering con un modello che funziona solo con DateTime e non Null, ma poi ho totalmente tirato fuori tutte le colonne che mostrano questi DataTime? proprietà.

Il mio codice è il seguente:

Visualizza codice per Telerik MVC griglia

<%= 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; }
}

Qualcuno ha un'idea di come posso risolvere questo?

È stato utile?

Soluzione

Sono riuscito a trovare la soluzione a questo problema sul forum Telerik. Se qualcun altro si verifica questo problema, controllare il thread:

http: //www.telerik.com/community/forums/aspnet-mvc/grid/problem-with-nullable-datetime-property.aspx#1423387 In breve, la soluzione è che si dovrebbe avere un EditorTemplates cartella nella Vista / cartella Shared del progetto ASP.NET MVC. Questa cartella EditorTemplates viene aggiunto da Telerik. In questa cartella v'è una vista template chiamato DateTime.ascx che eredita da System.Web.Mvc.ViewUserControl. Il problema è che il modello è in attesa di un DateTime normale. Per risolvere il problema, cambiare aspettarsi un DateTime nullable nel seguente modo:

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

questo risolve il problema.

Altri suggerimenti

È inoltre necessario eliminare tutti i modelli (non annullabili) si può avere avuto prima in ordine per il DateTime? modello di essere colpito.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top