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);
    } 

PropertyViewModel:

    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

GarageId がある場所ではMvcPropertyManagement.Models.Propertyなく、モデルとして使用しているようです。MvcPropertyManagement.Models.ViewModels.PropertyViewModel

モデルを次のよう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 に答える