0

我已经浏览了这里处理 MVC 以及如何使用 DropDownList 的大多数博客文章,但收效甚微。

我试图在这个链接上模仿一个帖子,但显然对我不起作用:下拉菜单导致无效模型状态。ASP.NET MVC 3

目标是为用户提供一个下拉列表,以在 HTTP GET 创建视图中选择一个家庭车库拥有多少辆汽车。

我目前收到的错误是:

编译器错误消息:CS1061:“MvcPropertyManagement.Models.Property”不包含“GarageId”的定义,并且找不到接受“MvcPropertyManagement.Models.Property”类型的第一个参数的扩展方法“GarageId”(您是否缺少使用指令还是程序集引用?)

第 84 行: 第 85 行: 第 86 行:@Html.DropDownListFor(model => model.GarageId, Model.LkupGarageTypes) 第 87 行:
@Html.ValidationMessageFor(model => model.GarageType) 第 88 行:

我的模型:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.ComponentModel.DataAnnotations;
    using System.Web.Mvc;
    using MvcPropertyManagement.Models;
    using MvcPropertyManagement.Models.ViewModels;

    namespace MvcPropertyManagement.Models
    {
        public class Property
        {
            public bool Garage { get; set; }
        
            [Display(Name="Garage Capacity")]
            public string GarageType { get; set; }
    }

控制器:

    using System;
    using System.Data;
    using System.Collections.Generic;
    using System.Data.Entity;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MvcPropertyManagement.Models;
    using MvcPropertyManagement.Models.ViewModels;

    public ActionResult Create()
    {
        PropertyViewModel viewModel = new PropertyViewModel();
        viewModel.LkUpGarageType = new SelectList(db.LkUpGarageTypes, "GarageTypeID",         "LkUpGarageType"); 
        return View(viewModel);
    } 

属性视图模型:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MvcPropertyManagement.Models;

    namespace MvcPropertyManagement.Models.ViewModels
    {
        public class PropertyViewModel
        {
            public int? GarageId { get; set; }
            public IEnumerable<SelectListItem> LkUpGarageType { get; set; }        
        }
    }

创建视图:

<div class="editor-field">
    @Html.DropDownListFor(model => model.GarageId, Model.LkupGarageTypes)
    @Html.ValidationMessageFor(model => model.GarageType)
</div>
4

1 回答 1

0

似乎您使用MvcPropertyManagement.Models.Property的是模型,而不是MvcPropertyManagement.Models.ViewModels.PropertyViewModelGarageId 所在的位置。

尝试将模型更改为MvcPropertyManagement.Models.ViewModels.PropertyViewModel视图:

@model MvcPropertyManagement.Models.ViewModels.PropertyViewModel

更新: 用于模型的属性类:

public class Property
{
  public bool Garage { get; set; }

  [Display(Name="Garage Capacity")]
  public string GarageType { get; set; }

  public int? GarageId { get; set; }

  public IEnumerable<SelectListItem> LkUpGarageType { get; set; } 
}

创建动作:

public ActionResult Create()
{
  Property viewModel = new Property();
  viewModel.LkUpGarageType = new SelectList(db.LkUpGarageTypes, "GarageTypeID",         "LkUpGarageType"); 
  return View(viewModel);
} 
于 2012-04-17T06:36:49.827 回答