0

私は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 class ExchangeRates
{
    public string ID { get; set; }
    public string Name { get; set; }
}

為替レート コントローラー:

 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 List<CommonLayer.Currency> getAllCurrencies()
    {
        var query = from curr
                    in this.Entity.Currencies
                    select curr;

        return query.ToList();
    }

私が得ているエラー:

ディクショナリに渡されたモデル アイテムのタイプは「System.Collections.Generic.List 1[CommonLayer.Currency]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable1[D​​SABankSolution.Models.ExchangeRates]」です。

ありがとう!

4

2 に答える 2

1

エラーはそれをすべて言います。Currencyこのコードで示されているように、コレクションを返しています

IEnumerable<CommonLayer.Currency> currency

それでも、あなたのビューはのコレクションとして期待されていますExchangeRates

@model IEnumerable<DSABankSolution.Models.ExchangeRates>

したがって、ビューの宣言を次のように変更します

@model IEnumerable<CommonLayer.Currency>

ExchangeRatesまたはコントローラーメソッドからのリストを返します

于 2013-05-07T11:15:35.540 に答える
0

あなたのビューは型の強く型付けされたモデルを期待しています

IEnumerable<DSABankSolution.Models.ExchangeRates>

しかし、あなたは合格しています

IEnumerable<CommonLayer.Currency> 

ビューに戻ります。

于 2013-05-07T11:15:59.757 に答える