0

ドロップダウン リストにデータを入力するビューを作成しようとしている JQuery Mobile アプリがあります。コントローラーでモデルの IEnumerable リストを作成し、それをビューに渡します。ビューはレンダリングされず、「ページの読み込みエラー」と表示されます(J-Queryから)。Layout= 行のビューの上部にブレークポイントを配置しても、そこに到達しません。

これが私のコントローラーです:

    public virtual ActionResult List()
    {
        string customerCode = RouteData.Values["id"].ToString();

        var csdDB = new DBContext(customerCode);

        // Return all locations
        IEnumerable<SelectListItem> sites = csdDB.Sites
                              .OrderBy(o => o.SiteName)
                              .AsEnumerable()
                              .Select(s => new SelectListItem
                              {
                                  Text = s.SiteName,
                                  Value = s.SiteID.ToString()
                              });

        return View(sites);
    }

ビューは次のとおりです。

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

@model IEnumerable<Models.Site>

<div data-role="content">
    <ul data-role="listview" data-divider-theme="b" data-inset="true">
        <li data-role="list-divider" role="heading">
            Locations
        </li>
        @foreach(var site in Model)
        { 
        <li data-theme="c">
            <a href="~/Site/SiteMenu/@site.SiteID" data-transition="slide">
                @site.SiteName - (@site.ICAO)
            </a>
        </li>
       }
    </ul>
</div>

このページは、次のように前のページから呼び出されます。

            <li data-theme="c">
            @Html.ActionLink("Sites by HTML.ActionLink", "List", "Site", new { id = @ViewBag.CustomerCode }, new
            {

                data_native_menu = "false",
                name = "",
                data_theme = "c"
            })
        </li>

DBContext は、Entity Framework を使用して作成されました。また、「サイト」リストが作成されていることを確認しました。

ビューが読み込まれない理由について何か考えはありますか?

4

1 に答える 1

0

ビューで、モデルを次のように定義します。

@model IEnumerable<Models.Site>

しかし、コントローラーでは戻ります

IEnumerable<SelectListItem> sites = ...
return View(sites);

しかしそうでIEnumerable<SelectListItem>はなくIEnumerable<Models.Site>、例外がスローされ、Jquery Mobile からエラーが発生します。

それを解決するには、アクションから戻る必要がありIEnumerable<Models.Site>ます。部分全体を削除するだけで機能するSelectはずです:

IEnumerable<Site> sites = csdDB.Sites
                          .OrderBy(o => o.SiteName)
                          .AsEnumerable();
return View(sites);

とにかく、ビューでモデルを形成するSelectListItemなどのプロパティを使用したため、サイトをに変換しても意味がありませんでした。コピペミスだったのかな…SiteNameICAO

于 2013-01-10T16:19:06.173 に答える