Контроллер сохраняет только 1 переменную в базу данных - PullRequest
0 голосов
/ 12 июля 2019

У меня есть HttpPost Controller, который я пытаюсь использовать для получения данных из просмотра и сохранения данных модели в моей локальной базе данных mvc.Хотя, когда я проверяю форму (которая имеет 4 входа для ввода пользователем), отправляет ее, а затем проверяет базу данных, в таблицу сохраняется только School.Date, а остальные 3 переменные остаются пустыми (даже если я ввел их ввместе с School.Date).

Моя школа Модель:

namespace BookingSys.Models
{
  public class School
  {
    public DateTime Date { get; set; }
    public int Id { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public int PhoneNumber { get; set; }
  }
}

Мои контроллеры для просмотра бронирования:

    [HttpGet]
    public ActionResult Booking()
    {
         var model = db.Dates.ToList();
         return View(model);
    }


    [HttpPost]
    public ActionResult Booking(School model)
    {
        db.Schools.Add(model);
        db.SaveChanges();
        return RedirectToAction("Booking");
    }

Мой просмотр бронирования:

@model List<BookingSys.Models.Datepicker>

@{
  ViewBag.Title = "Booking";
}

<h2>School Bookings</h2>

<form asp-controller="School" asp-action="Booking" method="post">
  <br />
  <div>
    <label for="Date">Choose Date:</label>
    <input asp-for="School.Date" id="txtDate" name="Date" />
  </div>
  <br />
  <div>
    <label for="Name">School Name:</label>
    <input asp-for="School.Name" id="txtName" name="Name: " />
  </div>
  <br />
  <div>
    <label for="Email">Email:</label>
    <input asp-for="School.Email" id="txtEmail" name="Email: " />
  </div>
  <br />
  <div>
    <label for="Phone">Phone Number:</label>
    <input asp-for="School.PhoneNumber" id="txtPhone" name="Phone Number: 
" />
</div>
<br />
<input type="submit" value="Submit" class="submit" />
</form>

<link href="~/Content/themes/base/jquery-ui.min.css" rel="stylesheet" />

// jQuery UI Datepicker
@section scripts {

<script src="~/Scripts/jquery-ui-1.12.1.min.js"></script>
<script>
            jQuery(function () {

                var enableDays = ['@Html.Raw(string.Join("','", 
Model.Select(d => d.Date.ToString("dd-MM-yyyy"))))'];

                console.log(enableDays);

                function enableAllTheseDays(date) {
                    var sdate = $.datepicker.formatDate('dd-mm-yy', date)
                    console.log(sdate)
                    if ($.inArray(sdate, enableDays) != -1) {
                        return [true];
                    }
                    return [false];
                }

                $("#txtDate").datepicker({
                    dateFormat: "dd/MM/yy",
                    beforeShowDay: enableAllTheseDays,



                });

            });
</script>

@Scripts.Render("~/bundles/jqueryval")
}

<style>
 .my-class a {
    background-color: #07ea69 !important;
    background-image: none !important;
    color: #ffffff !important;
}
</style>

Так выглядит контекст БД;дата не спасает проблем, но имя, адрес электронной почты и номер телефона по какой-то причине не сохраняются.Кто-нибудь знает почему?

db

Приветствия

1 Ответ

2 голосов
/ 12 июля 2019

Ваши атрибуты name неверны для ваших текстовых полей, кроме поля Дата.name - это то, что привязывается к модели при выполнении POST.

name="Name: " должно быть name="Name", оно должно совпадать с именем поля в модели.(кажется, вы хотели использовать атрибут placeholder - т.е. placeholder="Name: ")

На самом деле я не думаю, что вам нужно добавлять их вручную, потому что когда вы вводите asp-for, он должен добавитьid и name для вас.

Так что просто удалите все атрибуты id и name из ваших asp-for входов.

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