它正在使用ViewData
和ViewBag
,但尝试强类型无法构建模型类型引用的模型绑定
我错过了任何人,做错了什么。
@model Working_with_Views.Models.Product;
@{
var product = Model;
}
<h3>Name: @product.Title</h3>
<h2>Price: @product.Price</h2>
<h5>Produce Date: @product.ProduceDate</h5>
查看页面编译时错误
namespace Working_with_Views.Models
{
public class Product
{
public int ProductId { get; set; }
public string ImgePath { get; set; }
public string Title { get; set; }
public DateTime ProduceDate { get; set; }
public DateTime LeftDateExpire { get; set; }
public decimal Price { get; set; }
}
}
public ActionResult Index()
{
Product product = new Product()
{
Title = "Pepsi",
Price = 30.00m,
ProduceDate = DateTime.Now,
LeftDateExpire = DateTime.Now.AddDays(7),
};
return View(product);
}
答案 0 :(得分:0)
将model
传递给视图或通过ViewBag
和ViewData
使用它是两种截然不同的方式。实施各自的方式是非常不同的。
在您的情况下,您错误地将模型传递给视图 - 事实上您甚至没有通过它。您只是指定可以找到模型的位置。您需要指定整个namespace
,包括模型名称,例如Product
:
@model Working_with_Views.Models.Product
现在您已将模型传递给视图,现在可以按照自己的意愿使用。
使用下面的内容不方便,因为如果您没有指定模型,视图将如何知道您的模型为Product
?如果还有其他模型,例如Customer
,Address
,Country
等,会发生什么?您的观点如何知道必须使用Product
?
@model Working_with_Views.Models;
这就是您需要为视图指定您想要使用的模型的原因。
您甚至不需要此部件,因为您可以直接使用该模型:
@{
var product = Model;
}
删除上面提到的代码,您可以使用控制器传递的模型,如下所示:
<h3>Name: @Model.Title</h3>
<h2>Price: @Model.Price</h2>
<h5>Produce Date: @Model.ProduceDate</h5>
我希望在视图中使用模型时,这会为您澄清一些事情。