Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC从数据库填充下拉列表_Asp.net Mvc_Razor_Html Select - Fatal编程技术网

Asp.net mvc MVC从数据库填充下拉列表

Asp.net mvc MVC从数据库填充下拉列表,asp.net-mvc,razor,html-select,Asp.net Mvc,Razor,Html Select,我是MVC的新手。我试图用从数据库检索到的货币填充下拉列表。我做错了什么 @model IEnumerable<DSABankSolution.Models.ExchangeRates> @{ ViewBag.Title = "Exchange Rates"; Layout = "~/Views/Shared/_Layout.cshtml"; } <br /> <br /> <input type="text" siz

我是MVC的新手。我试图用从数据库检索到的货币填充下拉列表。我做错了什么

@model IEnumerable<DSABankSolution.Models.ExchangeRates>

@{
    ViewBag.Title = "Exchange Rates";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<br /> <br /> 


     <input type="text" size="5" value="1" />
        @Html.DropDownList("currency", Model.Select(p => new SelectListItem{ Text = p.Name, Value = p.ID})) 
        to  
       @Html.DropDownList("currency", Model.Select(p => new SelectListItem { Text = p.Name, Value = p.ID }));
    <br /> <br /> <input type="submit" name="Convert" />
汇率控制器:

 public ActionResult Index()
    {
        IEnumerable<CommonLayer.Currency> currency = CurrencyRepository.Instance.getAllCurrencies().ToList();
        //ViewBag.CurrencyID = new SelectList(currency, "ID");
        //ViewBag.Currency = new SelectList(currency, "Name");

        return View(currency);
    }
public ActionResult Index()
{
IEnumerable currency=CurrencyRepository.Instance.GetAllCurrency().ToList();
//ViewBag.CurrencyID=新选择列表(货币,“ID”);
//ViewBag.Currency=新选择列表(货币,“名称”);
返回视图(货币);
}
货币储存库:

public List<CommonLayer.Currency> getAllCurrencies()
    {
        var query = from curr
                    in this.Entity.Currencies
                    select curr;

        return query.ToList();
    }
public List getAllCurrencies()
{
var query=来自当前
在这个。实体。货币
选择curr;
返回query.ToList();
}
我得到的错误是:

传递到字典中的模型项的类型为 'System.Collections.Generic.List
1[CommonLayer.Currency]',但是
字典需要类型为的模型项
'System.Collections.Generic.IEnumerable
1[DSABankSolution.Models.ExchangeRates]'


谢谢

错误说明了一切。您返回的是
货币的集合
,如此代码所示

IEnumerable currency

然而,您的观点是,expect是一个交换率
的集合

@model IEnumerable<DSABankSolution.Models.ExchangeRates>
@model IEnumerable
因此,您可以将视图中的声明更改为

@model IEnumerable<CommonLayer.Currency>
@model IEnumerable

或者从控制器方法返回
交换率的列表

您的视图需要类型为的强类型模型

IEnumerable<DSABankSolution.Models.ExchangeRates>
IEnumerable
然而,你是通过的

IEnumerable<CommonLayer.Currency> 
IEnumerable

返回视图。

您将
IEnumerable
传递到一个视图中,该视图期望模型为
IEnumerable
您在controller中传递了
CommonLayer.Currency
,但您在视图中得到了
SABankSolution.Models.ExchangeRates
,输入不匹配。因此我需要传递模型,我该怎么做?如何传递正确的模型类似于如何传递货币。因此,与其查询货币,不如查询汇率。我想你知道怎么做吗?因此,您有
这个.Entity.ExchangeRates
?然后您可以从中进行选择。尝试更改视图声明以接受CommonLayer.Currency,但随后会弹出此错误:编译器错误消息:CS0012:未引用的程序集中定义了类型“System.Data.Objects.DataClasses.EntityObject”。您必须添加对程序集“System.Data.Entity,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”的引用。请确保您有对
System.Data.Entity
EntityFramework.dll
的引用,您正在使用EF,不是吗?必须将其添加到我的web.config中:
IEnumerable<CommonLayer.Currency>