2014-02-12 51 views
3

的我寫這將創建一個對象的客戶,並顯示它System.InvalidOperationException:傳遞到字典的模型產品類型

的Class1.cs代碼是我使用的模型:

using System;      
using System.Collections.Generic;      
using System.Linq;      
using System.Web;      

namespace WebApplication4.Models       
{      
    public class Class1      
    {      
     public class Customer      
     {      
      public int Id { set; get; }      
      public string CustomerCode { set; get; }       
      public double Amount { set; get; }      


     }      

    }      
}      

Default1Controller下我有:

using System;   
using System.Collections.Generic;   
using System.Linq;   
using System.Web;   
using System.Web.Mvc;   


using WebApplication4.Models ;   


namespace WebApplication4.Models    
{   
    public class Default1Controller : Controller    
    {   
     //   
     // GET: /Default1/   
     public ActionResult Index()   

     {   
      Class1.Customer ob = new Class1.Customer();   

      ob.Id = 1001;   
      ob.CustomerCode = "C001";   
      ob.Amount = 900.23;   
      return View(ob);    
     }   
    }  
}  

我右點擊的ActionResult,並加入用下面的代碼的圖:

@model WebApplication4.Models.Class1 

@{ 
    ViewBag.Title = "Index"; 
} 

    <html> 


    <head> 
     <title>Title of the document</title> 
    </head> 

     <body> 

      <div> 
       The customer id is: <% = | Model.Id %> < br/> 
       The customer Code is: <% = | Model.CustomerCode %> < br/> 
       The customer Amount is: <% = | Model.Id %> < br/> 

      </div> 
</body> 

</html> 

當我運行代碼,我得到:

異常詳細信息:System.InvalidOperationException:傳遞到字典的模型項的類型爲「WebApplication4.Models.Class1 +客戶」,但這個字典需要一個'WebApplication4.Models.Class1'類型的模型項。


好,我的Class1.cs下所以現在只能說,公共類客戶拿出坐落類,

,我也改變了命名空間WebApplication4.Models

到命名空間DefaultController1.cs下WebApplication4.Controller,

,但是當我去Index.cshtml下,它說

類型或命名空間的Class1不存在於名稱空間WebApplication4.Models

回答

3

您的控制器正在實例化一個類型爲Class1.Customer()的對象傳遞給razor View,而您的View已被告知t o期望Class1型號的型號。

你有一個嵌套類 - 我不確定這是故意的嗎?

如果是,該視圖更改爲:

@model WebApplication4.Models.Class1.Customer 

編輯
我編譯並運行此:

型號(/Models/Customer.cs)

namespace WebApplication4.Models 
{ 
    public class Customer 
    { 
     public int Id { set; get; } 
     public string CustomerCode { set; get; } 
     public double Amount { set; get; } 
    } 
} 

控制器(/Controllers/Default1Controller.cs)

using System.Web.Mvc; 
using WebApplication4.Models; 

namespace WebApplication4.Controllers 
{ 
    public class Default1Controller : Controller 
    { 
     public ActionResult Index() 
     { 
      var ob = new Customer 
      { 
       Id = 1001, 
       CustomerCode = "C001", 
       Amount = 900.23 
      }; 

      return View(ob); 
     } 
    } 
} 

查看/Views/Default1/Index.cshtml)。
注意剃鬚刀使用@Model...而不是<%= Model....%>像網頁形式。

@model WebApplication4.Models.Customer 

@{ 
    ViewBag.Title = "Index"; 
} 

<html> 
<head> 
    <title>Title of the document</title> 
</head> 
<body> 
    <div> 
     The customer id is: @Model.Id < br/> 
     The customer Code is: @Model.CustomerCode < br/> 
     The customer Amount is: @Model.Amount < br/> 
    </div> 
</body> 
</html> 

MyApp/Default1/Index

<html> 
<head> 
    <title>Title of the document</title> 
</head> 
<body> 
    <div> 
     The customer id is: 1001 < br/> 
     The customer Code is: C001 < br/> 
     The customer Amount is: 900.23 < br/> 
    </div> 
</body> 
</html> 
+0

產生以下頁面@ user2439070我已經編譯和運行以上。請注意razor的'@'語法與webforms的'<%='語法。 – StuartLC

+0

好的我已經做出了這些更改,但它仍然不能將客戶視爲視圖下的@model WebApplication4.Models.Customer行的模型 – user2439070

相關問題