Нет данных, отображаемых в представлении в DropDownList для использования основного MVC - PullRequest
1 голос
/ 08 мая 2019

Я относительно новичок в MVC. Я работаю над проектом, чтобы получить общее представление о том, как работает архитектура MVC, но у меня возникли некоторые проблемы. Я думаю, что у меня есть большая часть этого покрыта, но кое-что (маленькое я надеюсь) отсутствует.

Ниже приведены моя модель, функции класса controller / DataAccess и BusinessLogic, которые я написал, и мой метод отображения в представлении.

Может кто-нибудь, пожалуйста, заглянуть через это и, надеюсь, определить, что я делаю неправильно или отсутствует? Спасибо.

@ edit: Также хотел бы добавить, что в моем контроллере есть отладчики, функции BL и DA, и НИКОГДА из них даже не попали в ловушку ... Я считаю, что это проблема. Также большое спасибо тому, кто украсил мой вопрос.

Модель

public class TerminalCommandVM
{
    public TerminalCommandVM()
    {
        TerminalsDDL = new List<SelectListItem>();
        TerminalCommandLookupsDDL = new List<SelectListItem>();
    }

    public TerminalCommand TerminalCommand { get; set; }

    public List<TerminalCommand> TerminalCommands { get; set; }

    [Display(Name = "Terminal ID")]
    public List<SelectListItem> TerminalsDDL { get; set; }

    [Display(Name = "Command")]
    public List<SelectListItem> TerminalCommandLookupsDDL { get; set; }
}

Контроллер

//GET: Terminals
public ActionResult GetTerminals()
{
    var model = TCBL.GetTerminalDropDowns();
    return View(model);
}

Функция бизнес-логики

public TerminalCommandVM GetTerminalDropDowns()
{
    TerminalCommandVM ternimals = new TerminalCommandVM();
    ternimals.TerminalsDDL = TCDA.GetTerminalsDropDown();

    return ternimals;
}

Функция доступа к данным

public List<SelectListItem> GetTerminalsDropDown()
{
    var terminals = DB.TerminalCommand.Select(o => 
        new SelectListItem { Text = o.TerminalID, Value = o.TerminalID})
        .ToList();

    return terminals;
}

Посмотреть

@using (Html.BeginForm("GetTerminals", "TerminalCommand", FormMethod.Post, new { id = "formTerminalCommand" }))
<div class="row">
  <div class="col-md-12" style="overflow-y:scroll">
    <table class="table table-striped table-hover table-bordered">
      <thead>
        <tr>
          <th>Terminal</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>
            @Html.DropDownListFor(o => o.TerminalsDDL, Model.TerminalsDDL, new { Class = "form-control" })
          </td>
        </tr>
        <tr>
          <td colspan="4">HelpDescription</td>
        </tr>
      </tbody>
    </table>
  </div>
</div>

Также добавлю мой макет, когда эта страница будет нажата:

                    <li class="sidenav-item@(currentPage == "TerminalCommand/Index" ? " active" : "")">
                    <a href="@Url.Action("Index", "TerminalCommand")" class="sidenav-link"><div>Terminal Commands</div></a>
                </li>

1 Ответ

1 голос
/ 08 мая 2019

Если точка останова в вашем методе контроллера не получает удар, то это может быть проблема с перенаправлениями, маршрутами, URL и т. Д. Есть много вещей, которые вы можете сделать, чтобы решить эту проблему, но ничего конкретного.

  1. Есть ли у вас какие-либо встроенные контроллеры, которые поставляются с пустым проектом (Домой, О программе и т. Д.)? Если так, это работает?
  2. Добавить метод конструктора к контроллеру и установить точку останова внутри. Если это произойдет, проблема может быть в действии.
  3. Если вы не внесли никаких изменений в конфигурацию маршрута или не использовали атрибут маршрута, URL должен быть http://localhost:xxxxx/{ControllerName}/GetTerminals
...