C# - Ошибка получения привязки данных DropDownList - PullRequest
0 голосов
/ 07 апреля 2020

У меня в настоящее время есть страница индекса, которая выглядит следующим образом

<script>
    window.onload = function () {
        // Function that creates the locked header bar
        MakeStaticHeader('myInput', 800, 600, 78, false);

        $("#disposalordersite").val("");    
        // Default sort order is descending
        document.getElementById("default").innerHTML = "?";

        // Create the searchable dropdowns
        $(".chosen-select").chosen({ search_contains: true });    
    }
</script>


<h2>Disposal Orders</h2>

<p>@ViewBag.ErrorMessage</p>

<div id="DivRoot" align="left">
    <div style="overflow:hidden;" id="DivHeaderRow"></div>
    <div style="overflow-y:scroll;" onscroll="OnScrollDiv(this)" id="DivMainContent">
        <table class="table" id="myInput">
            <tr>
                <th>
                    <a href="javascript:void(0)" onclick="filter('orderdate', @ViewBag.page)">Date Created <span id="orderdate"></span></a>
                </th>
                <th>
                    <a href="javascript:void(0)" onclick="filter('default', @ViewBag.page)">DO ID <span id="default"></span></a>
                    <br />
                    <input id="id-filter" type="number" style="width:60px;border-radius:10px" min="0" />
                </th>
                <th>
                    <a href="javascript:void(0)" onclick="filter('site', @ViewBag.page)">Site <span id="site"></span></a><br />
                    @Html.DropDownList("Sites", null, "-- All --", htmlAttributes: new { @class = "form-control chosen-select", id = "disposalordersite", onchange = "filter('" + ViewBag.sortOrder + "', null, true)" })                                           
                </th>
            </tr>                 
        </table>
    </div>
</div>

И мой метод контроллера индекса выглядит следующим образом

      public ActionResult Index()
        {
            int perpage = 50;

            var disposalOrders = db.disposalOrders.Include(p => p.site).Where(x => x.deleted.Equals(false)).OrderByDescending(x => x.ID);

            ViewBag.Sites = new SelectList(db.Sites.Where(x => x.Name != "").OrderBy(x => x.Name), "ID", "Site");

            ViewBag.orderby = "false";
            ViewBag.sortOrder = "default";

            ViewBag.page = 1;
            ViewBag.totalPages = (int)Math.Ceiling((float)disposalOrders.Count() / perpage);

            return View(disposalOrders.Take(perpage).ToList());
        }

Но я получаю сообщение об ошибке

Привязка данных: 'System.Data.Entity.DynamicProxies.Site_029E6A67501BC68F11B69EC25ADE322F959DA21E4F149BC6829B848C7D7AB9A0' не содержит свойство с именем 'Site'.

, когда оно становится Может кто-нибудь объяснить, что идет не так, потому что я сейчас очень запутался

1 Ответ

0 голосов
/ 07 апреля 2020

Я подозреваю, что название вашей модели неверно, следовательно, оно не привязано к магической c строке, название вашей модели и строка должны соответствовать подписи DropDownList в вашем DropDownList

Почему вы не делаете используйте DropDownListFor, это лучший вариант, и вы можете увидеть пример здесь


Измените на, то есть строка волхвов c не является обязательной.

 @Html.DropDownList("Site", null, "-- All --", htmlAttributes: new { @class = "form-control chosen-select", id = "disposalordersite", onchange = "filter('" + ViewBag.sortOrder + "', null, true)" })

Вот ссылка ref

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...