J'utilise le PanelBar Telerik pour effectuer un chargement asynchrone en utilisant une vue partielle. Je crée un modèle pour la vue partielle dans une vue parente, mais pour une raison quelconque, mes données ne sont pas prises en compte.MVC: Modèle de données manquantes en vue partielle
// Parent view
<% Html.Telerik().PanelBar().Name("PanelBar").HtmlAttributes(new { style = "padding-left: 0em;" }).Items(items =>
{
foreach (var item in Model.Visits)
{
SiteVisitDetailModel model = new SiteVisitDetailModel();
model.URL = item.Key; // this is properly set
model.Dates = new List<DateTime>(); // this is null in the controller
model.Dates.Add(DateTime.Now);
items.Add()
.Text(item.Key.ToString() + " " + item.Count().ToString() + " visits")
.LoadContentFrom("SiteViewDetail", "Report", model);
}
}).Render();
// Report controller method
public ActionResult SiteViewDetail(SiteVisitDetailModel model)
{
return PartialView(model); // model.URL is correct, model.Dates is null
}
// Model
public class SiteVisitDetailModel
{
public String URL
{
get;
set;
}
public List<DateTime> Dates
{
get;
set;
}
}
Comme suggéré par mes commentaires, lorsque la méthode SiteVisitDetail est appelée, a Model.URL les données correctes et Model.Dates est nul (ce n'est pas une liste contenant nulle, elle-même est nulle) du contrôleur. Comme on pouvait s'y attendre, il est également nul dans la vue partielle (SiteViewDetail).
Qu'est-ce qui causerait ce problème?
Vous ne devriez vraiment pas utiliser les contrôles ASP.NET dans une application ASP.NET MVC - Les contrôles violent la séparation des préoccupations et ne sont pas la façon de faire 'MVC'. –
C'est dans leur suite MVC, et mis à part ce problème, je l'ai trouvé très facile à utiliser. Je ne pense pas que je fasse quelque chose dans un type de WebForms, n'est-ce pas? –
Dans votre question, vous n'avez pas mentionné que vous utilisiez leurs contrôles MVC, vous venez de mentionner que vous utilisiez la barre de menu Telerik (qui existe dans leurs contrôles ASP.NET AJAX). –