C# 如何使用MVC3Razor填写列表?
我是Asp.NETMVC3的新手。如何使用Test方法显示列表,但我不能编写@product.Test() 视图:C# 如何使用MVC3Razor填写列表?,c#,asp.net,asp.net-mvc,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,我是Asp.NETMVC3的新手。如何使用Test方法显示列表,但我不能编写@product.Test() 视图: 当你尝试时会发生什么?我们可以看看您的Test()方法吗 您是否尝试过用这样的括号括起列表项生成 <ul> @foreach (var product in Model) { <li>@product.Test()</li> } </ul> @foreach(模型中的var乘积) { @产品测试() } 尝试时会发生什么?我
当你尝试时会发生什么?我们可以看看您的
Test()
方法吗
您是否尝试过用这样的括号括起列表项生成
<ul>
@foreach (var product in Model)
{
<li>@product.Test()</li>
}
</ul>
@foreach(模型中的var乘积)
{
- @产品测试()
}
尝试时会发生什么?我们可以看看您的Test()
方法吗
您是否尝试过用这样的括号括起列表项生成
<ul>
@foreach (var product in Model)
{
<li>@product.Test()</li>
}
</ul>
@foreach(模型中的var乘积)
{
- @产品测试()
}
您不必在视图中调用Test()
方法
视图中的Model
属性是作为第二个参数传递的:
return View("Product", products);
因此,基本上,控制器级别的产品
变量在您看来变成了模型
。
当视图实际呈现时,已经调用了
ProductController.Test()
方法(事实上,此调用使视图呈现更加均匀)。您不必在视图中调用该Test()
方法
视图中的Model
属性是作为第二个参数传递的:
return View("Product", products);
因此,基本上,控制器级别的产品
变量在您看来变成了模型
。
视图实际呈现时,已经调用了
ProductController.Test()
方法(事实上,此调用使视图呈现更均匀)。您已经将产品模型传递给视图,因此不必在视图中调用控制器操作。简单使用
@product.PropertyNameHere
如果启用了Intellisense,则应在键入@product.后立即自动填充选项列表
您还需要确保您的foreach周围有支架,尽管我不完全确定这是否必要。。。我想是的
@foreach (var product in Model)
{
<li>@product.Whatever</li>
}
@foreach(模型中的var产品)
{
@产品,随便什么
}
您已将产品模型传递给视图,因此不必在视图中调用控制器操作。简单使用
@product.PropertyNameHere
如果启用了Intellisense,则应在键入@product.后立即自动填充选项列表
您还需要确保您的foreach周围有支架,尽管我不完全确定这是否必要。。。我想是的
@foreach (var product in Model)
{
<li>@product.Whatever</li>
}
@foreach(模型中的var产品)
{
@产品,随便什么
}
如果你和MVC较量,MVC不会赢,但你会输
问题是您试图从视图调用操作。这意味着你没有得到MVC。这意味着您正试图使用MVC视图,就像它是一个Web表单一样
MVC中的视图只是用来填充格式良好的数据的模板,用户可以很容易地消化这些数据
MVC vs Web表单-两个圣诞节请求的故事
让我们用一个季节性的比喻
MVC请求的故事:
在MVC中,视图
就像你的圣诞火鸡。火鸡塞满了数据,并被端给了用户
控制器就像厨师。家人向他要了一只火鸡,他做了火鸡,并把它作为圣诞晚餐。要烹调火鸡,厨师必须首先从商店拿到。厨师买火鸡的商店是型的
整个过程有点道理
ASP.NET Web表单请求的故事:
在ASP.NET Web窗体中,情况不同
再一次,这家人想要火鸡作为圣诞晚餐。他们不使用厨师,而是做一些极不可能的事情:
这家人没有问厨师,而是问火鸡
火鸡说“好”(或者更确切地说,“狼吞虎咽,目瞪口呆,狼吞虎咽”)。然后,它会自杀、拔毛、烹饪,如果没有在微波炉中爆炸,就会向家人(用户)献上燔祭
取而代之的是塞满了大量精心制作的可爱数据,取而代之的是一种叫ViewState的不讨人喜欢、难以消化的黏液,有点像宇航员的圣诞晚餐
晚餐太恶心了,欢乐的节日聚会变成了混乱,有人放火烧了仍然被困在烟囱里的圣诞老人(他吃了太多的肉馅饼)
与此同时,鲁道夫已经回到拉普兰,以便他能及时恢复,赶上发情季节,这有点像他的圣诞节
祝大家圣诞快乐(或者至少是你们中那些喜欢圣诞节的人)。如果你和MVC较量,MVC不会赢,但你会输
问题是您试图从视图调用操作。这意味着你没有得到MVC。这意味着您正试图使用MVC视图,就像它是一个Web表单一样
MVC中的视图只是用来填充格式良好的数据的模板,用户可以很容易地消化这些数据
MVC vs Web表单-两个圣诞节请求的故事
让我们用一个季节性的比喻
MVC请求的故事:
在MVC中,视图
就像你的圣诞火鸡。火鸡塞满了数据,并被端给了用户
控制器就像厨师。家人向他要了一只火鸡,他做了火鸡,并把它作为圣诞晚餐。要烹调火鸡,厨师必须首先从商店拿到。厨师买火鸡的商店是型的
整个过程有点道理
ASP.NET Web表单请求的故事:
在ASP.NET Web窗体中,情况不同
再一次,这家人想要火鸡作为圣诞晚餐。他们不使用厨师,而是做一些极不可能的事情:
这家人没有问厨师,而是问火鸡
火鸡说“好”(或者更确切地说,“狼吞虎咽,目瞪口呆,狼吞虎咽”)。然后它杀死它自己
using System.Data.Entity;
namespace MvcApp.Models
{
public class MyAppContext : DBContext
{
public DBSet<Product> { get; set; }
}
}
namespace MvcApp.Models
{
public class MyAppContextInitializer : DropAndCreateAlways<MyAppContext>
{
protected override void Seed(MyAppContext context)
{
Product product = new Product
{
Name = "Widget",
Price = 10.00m;
Description = "It's a widget!"
};
context.Products.Add(product);
base.seed(context);
}
}
}
Database.SetInitializer(new MvcAppContextIntializer());
namespace MvcApp.Controllers
{
public class ProductController : Controller
{
DBContext dbContext = new DBContext();
//
// GET: /Product/
public ViewResult List()
{
IEnumerable<Product> products = dbContext.Products;
return View(products);
}
}
}
@model IEnumerable<MvcApp.Models.Product>
@{
Layout = "~/Views/Shared/_Layout.cshtml";
ViewBag.Title = "List of Products";
}
<h2>Product List</h2>
<ul>
@foreach (var p in Model)
{
<li>@p.Name></li>
<li>@p.Description</li>
<li>@p.Price</li>
}
</ul>