получить данные со страницы бритвы, которые проходят мимо BindProperty - PullRequest
0 голосов
/ 30 сентября 2019

Обновление: У меня есть две страницы Razor, на первой странице я получил информацию о человеке, а на второй странице я собираюсь получить информацию о проекте от этого человека, который представил информацию на первой страницеНа второй странице (таблица ProjectInformation) я сохраняю данные, связанные с информацией первой страницы (таблица projectOwner), в personId ,

КонецОбновления

Я передаю "пользовательскую электронную почту" в razorPage, которая является BindProperty, как это

  [BindProperty]
  public string OwnerEmail { get; set; }
  public IActionResult OnGet(string OwnerId)
    {
        OwnerEmail = OwnerId;
        return Page();
    }

В RazorPage показывают это

@page
@model Sunn.Raz.Pages.Order.ProjectOrderModel
@using Sunn.Model
@{
ViewData["Title"] = "ProjectOrder";
}

<h4>ProjectOrder</h4>
    @Model.OwnerEmail

И у меня есть UserEmail в RasorPage, Теперь, когда пользователь нажимает на кнопку отправки , я хочу снова видеть электронную почту для метода OnPost () ,

  public async Task<IActionResult> OnPostAsync()
    {

        var ownerId = _context.ProjectOwners.Where(x => x.Email == OwnerEmail).Select(m => new { m.Id });
    }

но userEmail равно Null , как я могу иметь значение электронная почта пользователя (OwnerEmail) in OnPostAsync () ? Обновление 2: На странице Razor для доступа к нашей собственности используйте вот так

<div class="form-group">
                    <label asp-for="ProjectOrder.ProjectOwnerId" class="control-label"></label>
                    <select asp-for="ProjectOrder.ProjectOwnerId" class="form-control" asp-items="ViewBag.ProjectOwnerId"></select>
                </div>

Это значит до "ProjectOwnerId" использовать "ProjectOrder "

Я установил первый ответ в своем коде, но в onPostAsync (), " ProjectOwnerId " равен нулю

 <input type="hidden" asp-for="OwnerEmail" />

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Спасибо за вашу помощь Мне нравится, но я не уверен, что это лучший способ, но это работа

  1. Я определяю BindProperty в Project

    [BindProperty(SupportsGet = true)]

    public int OwnerId { get; set; }
    
  2. Заполните его в OnGet ()

    this.OwnerId = OwnerId;

  3. в RazorPage сделать это

    @ {Model.ProjectOrder.ProjectOwnerId = Model.OwnerId;}

0 голосов
/ 01 октября 2019

На Razor Pages вы просто отображаете значение OwnerEmail, но не публикуете его данные при отправке формы. Попробуйте добавить скрытый тип ввода, чтобы сделать его:

<form method="post">
    <h4>ProjectOrder</h4>
    @Model.OwnerEmail

    <input type="hidden" asp-for="OwnerEmail"/>

    <button type="submit">
       Submit
    </button>
</form>
...