我正在编写一个代码,用于创建对象客户并显示它
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 + Customer”,但此字典需要“WebApplication4.Models.Class1”类型的模型项。
好吧,我在Class1.cs下取出了嵌套类,
所以现在它只说公共类客户。
我还更改了名称空间WebApplication4.Models
命名为DefaultController1.cs下的WebApplication4.Controller,
但是当我使用Index.cshtml时,它会说
类型或命名空间Class1在名称空间WebApplication4.Models
中不存在答案 0 :(得分:3)
您的控制器正在实例化传递给剃刀View的Class1.Customer()
类型的对象,而您的View已被告知期望类型为Class1
的模型。
你有一个嵌套类 - 我不确定这是否是故意的?
如果是,请将视图更改为:
@model WebApplication4.Models.Class1.Customer
修改强>
我编译并运行了这个:
模型(/ Model / 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>