Модель после бритвы из Modal Null Exception - привязка не работает - PullRequest
0 голосов
/ 28 сентября 2019

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

Приведенный ниже код работает и правильно заполняет поля текущими полями, но OnPostUpdateDataAsync () завершается ошибкой с исключением нулевого объекта (AnПроизошло необработанное исключение при обработке запроса.).

<div id="edit-ticket" class="modal" tabindex="-1" role="dialog">    
    <div class="modal-dialog-700" role="document">
        <div class="modal-content modal-size">
            <div class="modal-header">
                <h6 class="modal-title">Edit</h6>
            </div>
            <div class="modal-body">
                <div class="container">
                    <div class="row justify-content-md-center">
                        <form asp-page-handler="updateData" method="post">
                            <input type="hidden" name="id" value="@Model.MyView.Id" />
                            <div class="form-group">
                                <label asp-for="MyView.PhoneNumber"  class="control-label">Contact Phone Number</label>
                                <input asp-for="MyView.PhoneNumber" class="form-control" />
                                <span asp-validation-for="MyView.PhoneNumber" class="text-danger"></span>
                            </div>
                            <div class="form-group">
                                <label asp-for="MyView.Email" class="control-label">Contact Email</label>
                                <input asp-for="MyView.Email" class="form-control" />
                                <span asp-validation-for="MyView.Email" class="text-danger"></span>
                            </div>

                            <div class="form-group">
                                <button class="btn">  
                                    <span class="text">Update</span>
                                </button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

Приведенный ниже метод мгновенно завершается с ошибкой нулевой ссылки на объект для MyView:

    [BindProperty]
    public MyDisplayViewModel MyView { get; set; }

   public void OnGet()
    {
        var data = m.GetData(_context, ID);
        MyView = new MyViewModel(data);
    }


 public async Task<IActionResult> OnPostUpdateDataAsync(int id)
        {
            var ticket = _context.Ticket.Include(x => x.Support).First(x => x.id == id);

            ticket.Support.PhoneNumber = MyView.PhoneNumber;
            ticket.Support.Email = MyView.Email;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());

            }

            return RedirectToPage(new { ID });

        }

Alternive не выдает ошибку, но также не заполняет поля полямитекущие данные:

 public async Task<IActionResult> OnPostUpdateDataAsync(int id, string phoneNumber, string email)
{
    var ticket = _context.Ticket.Include(x => x.Support).First(x => x.id == id);

    ticket.Support.PhoneNumber = phoneNumber;
    ticket.Support.Email = email;

    try
    {
        await _context.SaveChangesAsync();
    }
    catch (Exception e)
    {
        Console.WriteLine(e.ToString());
    }

    return RedirectToPage(new { ID });
}

Я уже использовал связанные свойства, поэтому я не знаю, что отличается.

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