【问题标题】:get data from razor page that pass by BindProperty从通过 BindProperty 传递的剃须刀页面获取数据
【发布时间】:2020-01-30 01:40:52
【问题描述】:

更新:我有两个 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

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

  public async Task<IActionResult> OnPostAsync()
    {

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

userEmailNull, 如何在 OnPostAsync() 中获得 user email(OwnerEmail) 的价值? 更新 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" />

【问题讨论】:

  • 在所示示例中的哪个位置有 UserEmail。目前状态下的问题也不完整,因此不清楚。
  • 我更新并描述了场景

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


【解决方案1】:

在 Razor Pages 上,只显示OwnerEmail 的值,提交表单时不要发布它的数据。尝试添加隐藏类型输入使其:

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

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

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

【讨论】:

  • 对于剃须刀查看它的工作,但在使用模型绑定的剃须刀页面中不起作用
  • @sunny 当我在剃须刀页面中尝试时它可以工作。但是我只有一页而你有两页,这有区别吗?你能解释一下你的代码吗?
  • 感谢您的帮助,我更新了代码并描述了绑定属性仍然无法正常工作
【解决方案2】:

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

  1. 我在 Project 中定义了 BindProperty

    [BindProperty(SupportsGet = true)]

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

    this.OwnerId = OwnerId;

  3. 在 RazorPage 中执行此操作

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 2020-05-13
    • 2019-05-17
    • 2021-06-29
    • 2022-01-16
    相关资源
    最近更新 更多