模型类型引用不在mvc视图中工作

时间:2016-05-11 04:56:21

标签: c# asp.net-mvc asp.net-mvc-4 razor-2

它正在使用ViewDataViewBag,但尝试强类型无法构建模型类型引用的模型绑定

我错过了任何人,做错了什么。

查看:

@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);
    }

1 个答案:

答案 0 :(得分:0)

model传递给视图或通过ViewBagViewData使用它是两种截然不同的方式。实施各自的方式是非常不同的。

在您的情况下,您错误地将模型传递给视图 - 事实上您甚至没有通过它。您只是指定可以找到模型的位置。您需要指定整个namespace,包括模型名称,例如Product

@model Working_with_Views.Models.Product

现在您已将模型传递给视图,现在可以按照自己的意愿使用。

使用下面的内容不方便,因为如果您没有指定模型,视图将如何知道您的模型为Product?如果还有其他模型,例如CustomerAddressCountry等,会发生什么?您的观点如何知道必须使用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>

我希望在视图中使用模型时,这会为您澄清一些事情。