0

mvcプロジェクトをビルドしている間、
私はasp.net mvc4.5でそれらを行っていないので、この質問に答えるのが本当に明白であると思われる場合、
または明らかな初心者の間違いを犯し
ている場合は、すべての問題を自由に修正してください...

実際にすべてをグーグルで調べています週末、私は少しの答えを得たようですが、
それをすべてまとめることができなかった

ので、タイトルが言うように 、複雑な別のレイヤーを追加する
ためにデータベースからデータを取得する単純なドロップダウンリストを作成しようとしています このDDLFは部分的です モデル を取得したものは次のとおりです。





using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;

namespace proj.Models
{
public class chartType
{
    public int id { get; set; }

    [Required]
    public string typename { get; set; }
}

public class chartTypeVM
{
    [Display(Name = "selectedID")]
    public int selectedChartType { get; set; }

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

コントローラ:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Web;
using System.Web.Mvc;

using proj.Models;

namespace proj.Controllers
{
public class HomeController : Controller
{
    orojDB db = new orojDB ();

    public ActionResult Index()
    {
        chartTypeVM model = initialiseSM();            

        return View(model);
    }

    private chartTypeVM initialiseSM()
    {

        // make scenario DDL
        // using chartTypes for now
        var q = db.chartTypes
            .Select(ct=> new {
                ct.id,
                ct.typename
            })
            .AsEnumerable()
            .Select(ct => new SelectListItem {
                Value = ct.id.ToString(),
                Text = ct.typename
            });

        var cts = new chartTypeVM{
            List = q.AsEnumerable()
        };
        cts.selectedChartType = 1;

        Debug.WriteLine("asdfasdf");

        return cts;
    }
}
}

見る:

@using proj.Models
@model chartTypeVM

<h3>We suggest the following:</h3>

@* *************** sections *************** *@
@section sm {
        <div id="sm">
            <section class="content-wrapper sm-content">
                @Html.Partial("_smPartial", Model)
            </section>
            <div class="smCloseD"><img src="/Images/closeArrow.png" alt="Open Scenario Manager" /></div>
            <div class="clear"></div>
        </div>
}

メイン レイアウト (ほとんどは表示されていません) :

@using proj.Models
@model chartTypeVM

            <section class="content-wrapper main-content">
                @RenderBody()
            </section>

        @RenderSection("sm",false);

最後にパーシャル:

@using proj.Models

@model chartTypeVM
<section class="smVars">
<div class="varLabel">Scenario:</div>
<div class="varInput">@Html.DropDownListFor( model=>model.selectedChartType, (SelectList)model.List)</div>
</section>




私が 試したことで、次のようなエラーが発生しました:
-「モデル」という名前は現在のコンテキストには存在しません
-または動的変数を使用できないことに関する
もの-または何かが推測されている

場合は、非常に感謝しています
= :-)
ありがとう!

4

1 に答える 1

0

ヘルパーを使用するにはDropDownListFor、ビューをモデルに強く型付けする必要があります。あなたの場合、それはchartTypeVMクラスになります。したがって、@model使用されているビュー モデルを示すディレクティブを部分ビューの先頭に追加します。

@model chartTypeVM
<section class="smVars">
    <div class="varLabel">Scenario:</div>
    <div class="varInput">
        @Html.DropDownListFor(model => model.selectedChartType, (SelectList)Model.List)
    </div>
</section>
于 2013-09-30T06:48:07.653 に答える