如何获取模型属性值并将其分配给另一个模型属性

时间:2019-01-12 08:18:42

标签: asp.net-core razor-pages

在剃须刀页面上,我有两种模型-技术人员和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>

2 个答案:

答案 0 :(得分:0)

对于Razor Pages:

如果我正确理解,您需要“以某种方式发送”技术人员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时,方法将被调用,您可以在此方法中做任何您想做的事情。

答案 1 :(得分:0)

非常感谢您的回复。它使我开始走上正确的道路(我是这项技术的新手)。当我终于完成我实际尝试做的事情时,我想到了以下解决方案:

    <form method="post">
        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
        <div class="form-group">
            <label asp-for="tech_skill.Tech_Id" class="control-label"></label>
            <select asp-for="tech_skill.Tech_Id" class="form-control">
                <option value=@Model.technician.TechnicianId>@Html.DisplayFor(model => model.technician.TechnicianId)</option>
            </select>
            <span asp-validation-for="tech_skill.Tech_Id" class="text-danger"></span>
        </div>

要使我的技术人员ID进入我的tech_skill模型,我只需使用一个选择,而只有一个选项是技术ID。很抱歉让您不得不猜测我想做什么。

欢呼

格雷格。