【问题标题】:MVC3 ViewModel namespace QuestionMVC3 ViewModel 命名空间问题
【发布时间】:2011-08-16 00:33:40
【问题描述】:

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

  1. 是否有一些特殊的方法可以创建 ViewModel 类?
  2. ViewModel 是一种方法,而不是 MVC3 中的一项功能吗?

谁能告诉我我错过了什么谢谢-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; }
        }

}

【问题讨论】:

  • 我从未听说过“ViewModels”文件夹,只是位于项目根目录下的“Models”。在您的示例代码中,我没有看到类定义。

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


【解决方案1】:

有什么特殊的方法可以创建 ViewModel 类吗?

,像创建任何其他类一样创建它们。 约定是将它们放在 Models 文件夹中。

ViewModel 是一种方法,而不是 MVC3 中的一个特性吗?

一种。它们不是框架本身的功能,而是建议保持 View 的简单和干净,并简化模型绑定。

谁能告诉我我错过了什么谢谢

你的类声明在哪里?

namespace MvcApplication8.ViewModels
{
   public class ThisIsTheClassNameAndMustGoFirst

【讨论】:

    【解决方案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 文件夹并添加一个新控制器。名称必须以“控制器”结尾。不要费心检查选项以添加操作方法。控制器看起来像这样:

      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 名称是视图、操作和控制器之间的所有内容。这都是约定俗成的,你不需要坚持它,但如果你不这样做,你将不得不做一些额外的管道。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-05
      • 2013-03-26
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多