0

私は初心者で、アプリケーションのコントローラーを使用してビューモデルを作成したいと考えています:

public class catalogue_produit
{
    [Key]
    public int PdtID { get; set; }

    public string PdtCode { get; set; }
    public string PdtNomCourt { get; set; }
    public string PdtNomLong { get; set; }
    public string PdtTexte { get; set; }
    public int PdtColisage { get; set; }
    public string PdtGencod { get; set; }
    public float PdtTva { get; set; }
    public float PdtTgap { get; set; }
    public string PdtRemplacerPar { get; set; }
    public bool PdtActif { get; set; }
    public bool PdtPau { get; set; }

    [Required]
    public int FournisseurID { get; set; }
    [ForeignKey("FournisseurID")]
        public virtual catalogue_fournisseur catalogue_fournisseur { get; set; }

    [Required]
    public int FamilleID { get; set; }
    [ForeignKey("FamilleID")]
        public virtual catalogue_famille catalogue_famille { get; set; }

    [Required]
    public int CategorieID { get; set; }
    [ForeignKey("CategorieID")]
        public virtual catalogue_categorie catalogue_categorie { get; set; }
}

//Classe gérant les fiches techniques
public class catalogue_fichetechnique
{
    [Key]
    public int FtID { get; set; }

    [Required]
    public int PdtID { get; set; }
    [ForeignKey("PdtID")]
        public virtual catalogue_produit catalogue_produit { get; set; }

    public string FtUrl { get; set; }
    public DateTime FtDate { get; set; }
}

だから私はビューモデルを行います:

public class ProduitViewModel
{
    public catalogue_produit catalogue_produit { get; set; }
    public catalogue_fichetechnique catalogue_fichetechnique { get; set; }
}

そして私のコントローラー:

public class ProduitController : Controller
{
    //
    // GET: /Produit/
    public ActionResult Index()
    {
        ProduitViewModel product = new ProduitViewModel();
        return View(product);
    }

インデックス実行時のエラー メッセージ:

L'élément de modèle passé dans le dictionnaire est de type 'WEBPHSMVC.ViewModels.ProduitViewModel', mais ce dictionnaire requiert un élément de modèle de type 'System.Collections.Generic.IEnumerable`1[WEBPHSMVC.ViewModels.ProduitViewModel]'. 
Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code. 

Détails de l'exception: System.InvalidOperationException: L'élément de modèle passé dans le dictionnaire est de type 'WEBPHSMVC.ViewModels.ProduitViewModel', mais ce dictionnaire requiert un élément de modèle de type 'System.Collections.Generic.IEnumerable`1[WEBPHSMVC.ViewModels.ProduitViewModel]'.

Erreur source: 




Une exception non gérée s'est produite lors de l'exécution de la requête Web actuelle. Les informations relatives à l'origine et l'emplacement de l'exception peuvent être identifiées en utilisant la trace de la pile d'exception ci-dessous.


Trace de la pile: 





[InvalidOperationException: L'élément de modèle passé dans le dictionnaire est de type 'WEBPHSMVC.ViewModels.ProduitViewModel', mais ce dictionnaire requiert un élément de modèle de type 'System.Collections.Generic.IEnumerable`1[WEBPHSMVC.ViewModels.ProduitViewModel]'.]
   System.Web.Mvc.ViewDataDictionary`1.SetModel(Object value) +509563
   System.Web.Mvc.ViewDataDictionary..ctor(ViewDataDictionary dictionary) +371
   System.Web.Mvc.WebViewPage`1.SetViewData(ViewDataDictionary viewData) +48
   System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +99
   System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +115
   System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +295
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
   System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +23
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +242
   System.Web.Mvc.<>c__DisplayClass1e.<InvokeActionResultWithFilters>b__1b() +21
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +177
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +324
   System.Web.Mvc.Controller.ExecuteCore() +106
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +91
   System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +34
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +19
   System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +10
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +48
   System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9629296
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

しかし、よくわかりませんし、コントローラーが機能しません:( ProduitViewModelでCRUDが必要です。

私を助けてください !

4

2 に答える 2

0

ViewModelモデル自体が含まれていますが、通常は必要なものではありませcatalogue_produitん。

の主なポイントの 1 つは、ViewModel通常はニーズに合わないViewことに依存せずにレンダリングできることです。Models/EntitiesView

于 2013-03-10T21:04:27.740 に答える
0

まあ、エラーメッセージを読むだけで役立ちます:

IEnumerable<ProduitViewModel>ビューには、のようなモデルがあります

@model IEnumerable<ProduitViewModel>

そして、あなたはそれに単一のインスタンスを渡しますProduitViewModel

したがって、ビューのモデルを次のように変更します

@model ProduitViewModel

またはIEnumerable単一のインスタンスではなく を送信します。

于 2013-03-11T07:50:33.663 に答える