我正在尝试创建一个ViewModel类。之后我在"ViewModels"文件夹中创建了类。无法识别我的列表类型声明。我的问题和代码如下:
- 是否有一些特殊的方式来创建ViewModel类?
- ViewModels是一种方法论,而不是mvc中的一个功能吗?
谁能告诉我我错过了什么谢谢-P
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcApplication8.ViewModels
{
//compiler does not recongize List class or SelectListitem
private List<SelectListItem> _products = new List<SelectListItem>();
//compiler does not recongize List class
public List<SelectListItem> products
{
get { return _products; }
}
}
是否有一些特殊的方式来创建ViewModel类?
不,像创建其他类一样创建它们。约定是将它们放在Models文件夹中。
ViewModels是一种方法论,而不是mvc中的一个特性吗?
的。它们不是框架本身的特性,而是一个建议,用来保持视图的简单和干净,并简化模型绑定。
谁能告诉我我错过了什么谢谢
你的类声明在哪里?
namespace MvcApplication8.ViewModels
{
public class ThisIsTheClassNameAndMustGoFirst
- 使用Razor创建一个新的空MVC 3项目。
-
在Models文件夹下添加一个类定义,即:
namespace MvcApplication1.Models { public class WhateverNameYouWantModel { public string Foo { get; set; } public string Bar { get; set; } } }
-
右键单击Controllers文件夹并添加一个新控制器。名称必须以Controller结尾。不要在添加动作方法时检查选项。控制器看起来像这样:
using System.Web.Mvc; using MvcApplication1.Models; namespace MvcApplication1.Controllers { public class HelloController : Controller { public ActionResult Index() { return View(new WhateverNameYouWantModel()); } } }
-
右键单击上面的索引()签名,选择"添加视图"。确保没有勾选任何内容,视图名称与动作名称"Index"匹配,Razor是引擎。在顶部添加模型类型:
@model MvcApplication1.Models.WhateverNameYouWantModel @{ Layout = null; } <!DOCTYPE html> <html> <head> <title>Index</title> </head> <body> <div>hello world!</div> </body> </html>
-
将mvc项目设置为启动项目,按F5,浏览器将打开http://localhost:xxxx,现在您需要指向http://localhost:xxxx/Hello/Index
在asp.net mvc中,名称是视图、动作和控制器之间的一切。这都是惯例,你不需要遵守,但如果你不遵守,你就需要做一些额外的管道