首页 > 解决方案 > 如何获取模型属性值并将其分配给另一个模型属性

问题描述

在剃须刀页面上,我有两个模型 - 技术员和 tech_skill。我正在从用户那里收集技能数据并用它创建一个 tech_skill 记录,但我不想让用户在技术人员 ID 中输入 - 我想从技术人员对象中获取它。

在 cshtml.cs 文件 OnGet 事件中,我得到了技术人员 ID。然后我在那里创建技术人员对象。然后在 cshtml 页面上,我知道我有技术人员,因为我可以显示他们的名字和姓氏。

我曾尝试将技术人员 ID 存储在隐藏字段“Techs_Id”中,但我可以弄清楚如何在表单 method="post" 部分中使用该值。

抱歉,如果我没有很好地解释这一点。

@{
ViewData["Title"] = "Create";
}
<h2>Create Tech_Skill Record</h2>
<hr />

<div>
    <h4>Technician</h4>
    <h3>
</div>

@Html.Hidden("Techs_Id", Model.technician.TechnicianId)

<div class="row">
    <div class="col-md-4">
        <form method="post">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div> 
            <div class="form-group">
                <label asp-for="tech_skill.Skill_Id" class="control-label"></label>
                <input asp-for="tech_skill.Skill_Id" class="form-control" />
                <span asp-validation-for="tech_skill.Skill_Id" class="text-danger"></span>
            </div>

标签: asp.net-corerazor-pages

解决方案


对于 Razor 页面:

如果我理解正确,您需要“以某种方式发送”技术人员 ID 以向特定技术人员添加技术技能。在表单标签内,您需要一个将数据发布到剃须刀页面处理程序的按钮:

 <form method="post">
    <div asp-validation-summary="ModelOnly" class="text-danger"></div> 
    <div class="form-group">
        <label asp-for="tech_skill.Skill_Id" class="control-label"></label>
        <input asp-for="tech_skill.Skill_Id" class="form-control" />
       <span asp-validation-for="tech_skill.Skill_Id" class="text-danger"></span>
  </div>
  <!-- and other code... -->
  <button type="submit" asp-page="/writeYourPageNameHere" asp-route-id="@Model.technician.TechnicianId" >Save Skill</button>
</form>

您的 post 方法处理程序将如下所示:

public async Task<IActionResult> OnPostAsync(int id) //technicianId will be written in id 
{
   //you can use id here
   return RedirectToPage("pageNameYouWantToRedirectTo");
}

当您按下按钮时,OnPostAsync方法将被调用,您可以在此方法中做任何您想做的事情。


推荐阅读