我是.NET的初学者,我正在学习MVC模式。我正在构建一个演示应用程序,演示任何产品的CRUD操作。在使用任何数据库连接之前,我决定使用内存变量进行测试。我的代码如下:
模型类
public class Product
{
[Key]
public int Id { get; set; }
[Required]
[Display(Name="Name")]
public String ProductName { get; set; }
[Required]
[Display(Name="Price")]
public float Price { get; set; }
[Display(Name="Discription")]
public String ProductDiscription { get; set; }
}
控制器类
public class ProductController : Controller
{
//
// GET: /Product/
public ActionResult Index()
{
return View(new Product{Id = 01, Price=100, ProductName="MyProduct", ProductDiscription="30 TeaBags in a pack"});
}
}
查看
@model CrudAppDemo.Models.Product
@{
ViewBag.Title = "Products";
}
<h2>Products</h2>
<div class="row">
<div class="col-md-4 ">
<table class="table">
<thead>
<tr>
<td>@Html.DisplayNameFor(model => model.Name)</td>
<td>@Html.DisplayNameFor(model => model.Price)</td>
<td>@Html.DisplayNameFor(model => model.Description)</td>
</tr>
</thead>
<tbody>
<tr>
<td>@Html.DisplayFor(model => model.Name)</td>
<td>@Html.DisplayFor(model => model.Price)</td>
<td>@Html.DisplayFor(model => model.Description)</td>
</tr>
</tbody>
</table>
</div>
</div>
当我运行此代码时,我收到CS0411错误:
答案 0 :(得分:1)
您的参数与模型中的参数不匹配。 你在模型中有ProductName,并且你试图访问不在模型中的Name,同样需要描述。
改为写下来。
<thead>
<tr>
<td>@Html.DisplayNameFor(model => model.ProductName)</td>
<td>@Html.DisplayNameFor(model => model.Price)</td>
<td>@Html.DisplayNameFor(model => model. ProductDiscription)</td>
</tr>
</thead>
<tbody>
<tr>
<td>@Html.DisplayFor(model => model.ProductName)</td>
<td>@Html.DisplayFor(model => model.Price)</td>
<td>@Html.DisplayFor(model => model. ProductDiscription)</td>
</tr>
</tbody>
答案 1 :(得分:1)
您好像使用显示名称[Display(Name="Name")]
作为您的媒体资源,而不是属性本身public String ProductName { get; set; }
。尝试更改以使用属性名称。
<td>@Html.DisplayNameFor(model => model.ProductName)</td>
<td>@Html.DisplayNameFor(model => model.Price)</td>
<td>@Html.DisplayNameFor(model => model.ProductDiscription)</td>