Asp.net mvc 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
@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.List1[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>