从BindProperty传递的剃须刀页面获取数据

时间:2019-09-30 18:28:11

标签: c# .net-core asp.net-core-mvc razor-pages

更新: :我有两个Razor页面,在第一页面中,我获得了个人信息,在第二页面中,我将从提交信息的那个人那里获得项目信息。第一页,第二页(ProjectInformation表)中,将与第一页(projectOwner表)信息相关的数据保存在 personId

更新结束

我在像这样的BindProperty的razorPage中传递“用户电子邮件”

  [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

我在RasorPage中有 UserEmail ,现在当用户单击 submit 按钮时,我希望再次看到发送到 OnPost()的电子邮件方法,

  public async Task<IActionResult> OnPostAsync()
    {

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

userEmail , 如何在 OnPostAsync()中获得 用户电子邮件(OwnerEmail) 的值? Update2: 在Razor Page中访问我们的财产,就像这样

<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 :(得分:0)

在“剃须刀页面”上,您只显示OwnerEmail的值,但在提交表单时不发布其数据。尝试添加隐藏的类型输入以使其:

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

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

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

答案 1 :(得分:0)

感谢您的帮助 我确实喜欢这样,但是我不确定那是最好的方法,但是可以工作

  1. 我在Project中定义BindProperty

    [BindProperty(SupportsGet = true)]

    public int OwnerId { get; set; }
    
  2. 在OnGet()中填充它

    this.OwnerId = OwnerId;

  3. 在RazorPage中
  4. 执行此操作

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