Чтение значений флажков в MVC Модель - PullRequest
1 голос
/ 04 мая 2020

Я рассмотрел различные способы чтения значений чековой книжки в моем файле Index.cs html, но пока мне кажется, что ни один из них не работает.

 <!DOCTYPE html>
 <html lang="en">
 <head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - Logger Index</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/css/site.css" />
</head>
<body>

@using (Html.BeginForm(new { action = "Employees" }))
{
    <header>
        <fieldset>
            <div>
                @Html.CheckBox("item1", true))
                <label for="coding">Coding</label>
            </div>
            <div>
                @Html.CheckBox("item1", false)
                <label for="music">Music</label>
           </div>
        </fieldset>
        <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
            <div class="container">
                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                        aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>

                <ul class="navbar-nav flex-grow-1">
                    <li>@Html.ActionLink("Logger", "Employees", new { area = "" }, new { @class = "navbar-brand" }),</li>
                </ul>

.........

Моя модель

  public class Employees
  {
    public int EmployeeID { get; set; }
    public string LastName { get; set; }
    public string FirstName { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
    public string Region { get; set; }
    public string PostalCode { get; set; }

    public bool item1 { get; set; }
    public bool item2 { get; set; }
    public class LogBookContext : DbContext
    {
        public DbSet<Employees> Employees { get; set; }
    }
}

Моя запись в контроллере:

 public IActionResult Employees()
    {

        string query = "SELECT EmployeeID,FirstName,Lastname,Address,City,Region,PostalCode FROM Employees";
        SqlDataAdapter adap = new SqlDataAdapter(query, "Data Source=Owner-PC;Initial Catalog=NORTHWND;Integrated Security=True");
        DataTable data = new DataTable();
        adap.Fill(data);
        return View(data);
    }

Я пытаюсь вернуть различные значения checkBox для использования при создании строки запроса вместо фиксированной строки запроса.

Ответы [ 2 ]

0 голосов
/ 10 мая 2020

Нашел ответ. Если вы используете @ActionLink для возврата к контроллеру, он не будет возвращать значения таких вещей, как CheckBox, RadioBox и т. Д. c, привязанных к моей модели. То, что мне нужно было сделать, это использовать подпрограмму Input Submit и индекс {HttpPost]. Тогда я мог видеть изменения флажков в моей модели. Затем выполните процедуру RedirectView для моего контроллера, которая обрабатывает вещи и отправляет результат в представление. Так почему бы при использовании кнопки @ActionLink не возвращать элементы модели, связанные с флажком?

0 голосов
/ 06 мая 2020

ОК, я добавил в начало моего просмотра

 @model LogBook.Models.Employees

Также изменил @CheckBox на @ Html .CheckBoxFor (m => m.item1, new {@class = "Сотрудники" })

вверху и в контроллере

 public IActionResult Employees2(Employees model)

Как вы можете видеть, item1 установлен в true, а item2 установлен по умолчанию в false. Когда я запускаю программу в режиме отладки, она останавливается на

 public IActionResult Employees2(Employees model)
    {
        bool item1 = model.item1;
        bool item2 = model.item2;

Оба Model.item1 и Model.item2 по-прежнему ложны.

...