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 回答