视图模型名称空间问题



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

  1. 是否有一些特殊的方式来创建ViewModel类?
  2. 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
  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"匹配,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

在asp.net mvc中,名称是视图、动作和控制器之间的一切。这都是惯例,你不需要遵守,但如果你不遵守,你就需要做一些额外的管道

相关内容

  • 没有找到相关文章

最新更新