我正在尝试创建一个ViewModel类。在“ViewModels”文件夹中创建了类之后。我的列表类型声明无法识别。我的问题和代码如下:
有人可以告诉我我错过了什么感谢-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; }
}
}
答案 0 :(得分:4)
是否有一些创建ViewModel类的特殊方法?
否,创建它们就像创建任何其他类一样。 惯例是将它们放在模型文件夹中。
ViewModels是一种方法论,而不是MVC3中的一项功能吗?
有点。它们不是框架本身的特性,而是建议保持View的简洁和简洁,并简化模型绑定。
有人可以告诉我我错过了什么,谢谢
你的类声明在哪里?
namespace MvcApplication8.ViewModels
{
public class ThisIsTheClassNameAndMustGoFirst
答案 1 :(得分:2)
在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()签名,然后选择“添加视图”。确保没有选中任何内容,视图名称与操作名称“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名称是视图,操作和控制器之间的所有内容。它的所有惯例,你不需要坚持它,但如果你不这样做,你将不得不做一些额外的管道。