Question

Je suis assez nouveau pour les extensions Telerik MVC. Je l'ai mis en œuvre ma première instance en vue avec succès. Je ne suis pas mon second point de vue de mise en œuvre en utilisant le Telerik MVC Grille, mais la classe qui est liée à la grille a 2 colonnes sont de type Nullable. Quand je lance mon code, la vue recrache une erreur comme suit:

L'élément de modèle passé dans le dictionnaire est nul, mais ce dictionnaire a besoin d'un élément de modèle non nul de type « System.DateTime ».

Je pensais à l'origine cela pourrait être un problème de rendu avec un modèle qui ne fonctionne qu'avec DateTime et non Nullable, mais je suis totalement pris en toutes les colonnes qui affichent ces DataTime? propriétés.

Mon code est le suivant:

Afficher le code pour Telerik MVC Grille

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

Quelqu'un at-il une idée comment je peux résoudre ce problème?

Était-ce utile?

La solution

J'ai réussi à trouver la solution à ce problème sur les forums Telerik. Si quelqu'un d'autre rencontre ce problème, consultez le fil suivant:

http: //www.telerik.com/community/forums/aspnet-mvc/grid/problem-with-nullable-datetime-property.aspx#1423387 En bref, la solution est que vous devriez avoir un dossier EditorTemplates dans votre vues / dossier partagé de votre projet ASP.NET MVC. Ce dossier EditorTemplates est ajouté par Telerik. Dans ce dossier, il y a une vue de modèle appelé DateTime.ascx qui hérite de System.Web.Mvc.ViewUserControl. Le problème est que le modèle attend un DateTime normal. Pour résoudre ce problème, changer d'attendre un DateTime nullable comme suit:

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

Cela résout le problème.

Autres conseils

Vous devez également supprimer tous les modèles (non-nullable) vous avez peut-être eu avant pour que le DateTime? modèle à frapper.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top