1

Razorビューを使用してMVC3で作業しています。部分ビューを呼び出すページを作成しました

@Html.Partial("_FeaturedRatesBox")

これは次のようになります:

@model IEnumerable<AppleWeb.Models.RateViewer>

<div class="col">
<h3>Today's Featured Rates</h3>
<form method="post" action="">
  <div class="tabber">
    <ul class="tabs unstyled">
      <li class="selected"><a href="#tab1">Loans</a></li>
      <li><a href="#tab2">Deposits</a></li>
    </ul>
    <div class="tab" id="tab1">
    @foreach (var item in Model)
    {
        <div class="rate"> <span class="left">@item.AccountName <br />
        </span> <span class="right"> As low as <span class="percent">@item.Rate</span></span></div>
        <!-- end of rate -->
    }
    </div>
    <!-- end of tab -->
    <div class="tab" id="tab2"> Loremipsum
    </div>
    <!-- end of tab -->
    <button type="submit" class="btn alignright">Apply Now</button>
  </div>
  <!-- end of tabber -->
</form>
</div>

モデルは次のようになりrateviewer.csます。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.EntityModel;
using AppleWeb.Models;

namespace AppleWeb.Models
{
    public class RateViewer
    {
        private PublicWebEntities pubDB = new PublicWebEntities();
        public virtual IEnumerable<DepositRate> FeaturedRatesDeposit()
        {
            var data = from item in pubDB.DepositRates
                       where item.Featured.Equals(true)
                       select item;
            return data.ToList();
        }
    }
}

部分ビューを呼び出す行でエラーが発生し、

CS1061:「AppleWeb.Models.RateViewer」に「AccountName」の定義が含まれておらず、タイプ「AppleWeb.Models.RateViewer」の最初の引数を受け入れる拡張メソッド「AccountName」が見つかりませんでした(usingディレクティブまたは組み立て

AccountNameとRateは、どちらもDepositRatesエンティティオブジェクトのエンティティ名です。DataModel.Designerファイルから:

public static DepositRate CreateDepositRate(global::System.Int32 rateID, global::System.String accountName, global::System.Double rate, global::System.Double aPY, global::System.Int16 sortingOrder)
{
    DepositRate depositRate = new DepositRate();
    depositRate.RateID = rateID;
    depositRate.AccountName = accountName;
    depositRate.Rate = rate;
    depositRate.APY = aPY;
    depositRate.SortingOrder = sortingOrder;
    return depositRate;
}

I'd hope to make this work as such, because then I can use this model elsewhere on the site.

4

2 に答える 2

2

モデルで IEnumerable プロパティを反復する必要があります。@foreach (var item in Model.FeaturedRatesDeposit)

于 2012-10-31T14:11:15.177 に答える
1

タイプ AppleWeb.Models.RateViewer の IEnumerable であるオブジェクトをビューに渡す必要があります。

コードは次のようになります。

@Html.Partial("_FeaturedRatesBox", new List<AppleWeb.Models.RateViewer>())

"new List<AppleWeb.Models.RateViewer>()" can be replaced with the actual instance of the collection you want to pass to the view.

また、タイプ「RateViewer」には「AccountName」というフィールドが含まれていません。

于 2012-10-31T14:20:27.450 に答える