MVC3 ViewModel命名空间问题

时间:2011-08-16 00:33:41

标签: asp.net-mvc-3 namespaces viewmodel

我正在尝试创建一个ViewModel类。在“ViewModels”文件夹中创建了类之后。我的列表类型声明无法识别。我的问题和代码如下:

  1. 是否有一些特殊的方法来创建ViewModel类?
  2. ViewModels是一种方法论,而不是MVC3中的一项功能吗?
  3. 有人可以告诉我我错过了什么感谢-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; }
            }
    
    }
    

2 个答案:

答案 0 :(得分:4)

  

是否有一些创建ViewModel类的特殊方法?

,创建它们就像创建任何其他类一样。 惯例是将它们放在模型文件夹中。

  

ViewModels是一种方法论,而不是MVC3中的一项功能吗?

有点。它们不是框架本身的特性,而是建议保持View的简洁和简洁,并简化模型绑定。

  

有人可以告诉我我错过了什么,谢谢

你的类声明在哪里?

namespace MvcApplication8.ViewModels
{
   public class ThisIsTheClassNameAndMustGoFirst

答案 1 :(得分:2)

  1. 使用Razor创建一个新的空MVC 3项目。
  2. 在Models文件夹下添加一个类定义,即:

    namespace MvcApplication1.Models
    {
        public class WhateverNameYouWantModel
        {
            public string Foo { get; set; }
            public string Bar { get; set; }
        }
    }
    
  3. 右键单击Controllers文件夹并添加新控制器。名称必须以“Controller”结尾。不要费心检查添加动作方法的选项。控制器看起来像这样:

    using System.Web.Mvc;
    using MvcApplication1.Models;
    
    namespace MvcApplication1.Controllers
    {
        public class HelloController : Controller
        {
            public ActionResult Index()
            {
                return View(new WhateverNameYouWantModel());
            }
        }
    }
    
  4. 右键单击上面的Index()签名,然后选择“添加视图”。确保没有选中任何内容,视图名称与操作名称“Index”匹配,Razor是引擎。在顶部添加模型类型:

    @model MvcApplication1.Models.WhateverNameYouWantModel
    @{
        Layout = null;
    }
    <!DOCTYPE html>
    <html>
    <head>
        <title>Index</title>
    </head>
    <body>
        <div>hello world!</div>
    </body>
    </html>
    
  5. 将mvc项目设置为启动项目,按F5,浏览器将打开http://localhost:xxxx,现在您需要指向http://localhost:xxxx/Hello/Index

  6. 在asp.net中,mvc名称是视图,操作和控制器之间的所有内容。它的所有惯例,你不需要坚持它,但如果你不这样做,你将不得不做一些额外的管道。