Je reçois une exception particulière en utilisant la méthode Html.RenderPartial. ASP.NET MVC semble être incapable d'un objet de type ClassA à un objet de type ClassA. Je me demandais si quelqu'un sait ce qui se passe.ASP.NET MVC: L'élément de modèle transmis au dictionnaire est de type 'ClassA', mais ce dictionnaire nécessite un élément de modèle de type 'ClassA'
Voici un peu plus d'information de fond. Je vais avoir la hiérarchie suivante en place:
public interface IInterface
{
string Name { get; }
}
public class ClassA : IInterface
{
public string Name
{
get
{
return "ClassA ";
}
}
}
L'utilisation de ces deux dans une vue:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<IEnumerable<IInterface>>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<% foreach (IInterface item in Model)
{
Html.RenderPartial(string.Concat(item.Name, "UserControl"), item);
}
%>
</asp:Content>
Et ayant un UserControl nommé ClassAUserControl avec cet en-tête:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ClassA>" %>
Edit: TypeHelpers.IsCompatibleObject (Valeur d'objet) décide que les deux types sont différents:
public static bool IsCompatibleObject<T>(object value)
{
return ((value is T) || ((value == null) && TypeAllowsNullValue(typeof(T))));
}
Dans le cas ci-dessus, T est ClassA et le type de valeur est ClassA. Cela fait vraiment me demande pourquoi 'valeur est T' échoue ...
http://stackoverflow.com/questions/2315129/the-model-item-passed-into-the-dictionary-is-of-type-mvc-models-modela-but-thi/2479865 # 2479865 peut vous être utile – Maslow