如何使用多个标签将 Id 从一个剃刀页面传递到另一个剃刀页面

时间:2020-12-29 02:11:13

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

我有一个包含多个选项卡中的多个表单的剃刀页面。当我提交表单时,它将与另一个一起转到下一个选项卡。我想将两个 id 从第一种形式传递到第二种形式(即剃刀页面)。这是代码。

这是用于提交第一个表单 StaffDetails.cshtml.cs 的函数

public async Task<IActionResult> OnPostInsertStaffDetailsAsync(StaffDetails StaffDetails)
        {
            ShowTypeOfEmployee = new SelectList(_context.TypeOfEmployees, "TypeOfEmployee", "TypeOfEmployee");
            ShowEmploymentType = new SelectList(_context.EmploymentTypes, "EmploymentType", "EmploymentType");            
            DeptName = new SelectList(_context.Department.OrderBy(e => e.DeptName), "DeptName", "DeptName");
            EmpCategories = new SelectList(_context.EmploymentCategory.OrderBy(e => e.EmpCategories), "EmpCategories", "EmpCategories");
            EmpStatus = new SelectList(_context.EmploymentStatus.OrderBy(e => e.EmpStatus), "EmpStatus", "EmpStatus");
            RegularOrTemporary = new SelectList(_context.RegTemp.OrderBy(e => e.RegularOrTemporary), "RegularOrTemporary", "RegularOrTemporary");
            IncentivePlans = new SelectList(_context.IncentivePlan, "IncentivePlans", "IncentivePlans");

            if (!ModelState.IsValid)
            {
                return Page();
            }
            else
            {
                await _context.StaffDetails.AddAsync(StaffDetails);
                await _context.SaveChangesAsync();                
                int StaffID = StaffDetails.StaffID;
                //HttpContext.Session.SetInt32("StaffID", StaffID);
                //HttpContext.Session.SetString("EmpID", StaffDetails.EmpID);
                TempData["EmpID"] = StaffDetails.EmpID;
                TempData["StaffID"] = StaffID;

                var foldername = StaffDetails.EmpID.ToString();
                var DirectoryPath = Path.Combine(_env.WebRootPath, "Documents", "EmployeeAttachments", foldername);
                if (!System.IO.Directory.Exists(DirectoryPath))
                {
                    System.IO.Directory.CreateDirectory(DirectoryPath);
                }
                return new OkResult();
            }
        }
    }
}

这是导航到下一个选项卡中的下一个表单的ajax函数。

function StaffDetailsCompleted(event) {            
            if (event.responseText != "") {
                $("#StaffDetails").html(event.responseText);
            } else {
                alert("Staff Details Has Been Added Successfully");
                $('a[href="#Biodata"]').tab('show');                
            }
        }

第二种形式 Biodata.cshtml

@page
@model Contractor_HRMS.Pages.Staff.Onboarding.BioDataModel
@{
    Layout = null;
}
<br />
<form asp-page-handler="InsertBioData" data-ajax="true" data-ajax-method="post" data-ajax-complete="BioDataCompleted">
    <div class="row">
        <div class="col-6">
            <input asp-for="StaffBioData.StaffID" id="StaffID" type="hidden" value='@TempData["StaffID"]' />
            <input asp-for="StaffBioData.EmpID" id="EmpId" type="hidden" value='@TempData["EmpID"]' />
            <!-- First Name -->
            <div class="form-group">
                <label asp-for="StaffBioData.IdenEmpFname" class="control-label-staff"></label>
                <input asp-for="StaffBioData.IdenEmpFname" class="form-control-staff" /><br />
                <span asp-validation-for="StaffBioData.IdenEmpFname" class="text-danger" style="margin-left:210px;"></span>
            </div>

            <!-- Last Name -->
            <div class="form-group">
                <label asp-for="StaffBioData.IdenEmpLname" class="control-label-staff"></label>
                <input asp-for="StaffBioData.IdenEmpLname" class="form-control-staff" /><br />
                <span asp-validation-for="StaffBioData.IdenEmpLname" class="text-danger" style="margin-left:210px;"></span>
            </div>

            <!-- Address -->
            <div class="form-group">
                <label asp-for="StaffBioData.Address" class="control-label-staff"></label>
                <input asp-for="StaffBioData.Address" class="form-control-staff" /><br />
                <span asp-validation-for="StaffBioData.Address" class="text-danger" style="margin-left:210px;"></span>
            </div>

            <!-- Photo -->
            <div class="form-group">
                <label class="control-label-staff"><b>Photo</b></label>
                <input type="file" asp-for="StaffPhoto" class="form-control-staff" multiple style="border:1px solid white;margin-right:20px" />
            </div>

            <!-- Gender -->
            <div class="form-group">
                <label asp-for="StaffBioData.Gender" class="control-label-staff"></label>
                <select asp-for="StaffBioData.Gender" asp-items="Model.StaffGender" class="form-control-staff">
                    <option value="">Please Select</option>
                </select><br />
                <span asp-validation-for="StaffBioData.Gender" class="text-danger" style="margin-left:210px;"></span>
            </div>

            <!-- Date of Birth -->
            <div class="form-group">
                <label asp-for="StaffBioData.Dob" class="control-label-staff"></label>
                <input asp-for="StaffBioData.Dob" class="form-control-staff" /><br />
                <span asp-validation-for="StaffBioData.Dob" class="text-danger" style="margin-left:210px;"></span>
            </div>

            <!-- Race -->
            <div class="form-group">
                <label asp-for="StaffBioData.Race" class="control-label-staff"></label>
                <input asp-for="StaffBioData.Race" class="form-control-staff" /><br />
                <span asp-validation-for="StaffBioData.Race" class="text-danger" style="margin-left:210px;"></span>
            </div>

            <!-- Religion -->
            <div class="form-group">
                <label asp-for="StaffBioData.Religion" class="control-label-staff"></label>
                <select asp-for="StaffBioData.Religion" asp-items="Model.StaffReligion" class="form-control-staff">
                    <option value="">Please Select</option>
                </select><br />
                <span asp-validation-for="StaffBioData.Religion" class="text-danger" style="margin-left:210px;"></span>
            </div>

            <!-- Nationality -->
            <div class="form-group">
                <label asp-for="StaffBioData.Nationality" class="control-label-staff"></label>
                <input asp-for="StaffBioData.Nationality" class="form-control-staff" /><br />
                <span asp-validation-for="StaffBioData.Nationality" class="text-danger" style="margin-left:210px;"></span>
            </div>

            <!-- Ethnicity -->
            <div class="form-group">
                <label asp-for="StaffBioData.Ethnicity" class="control-label-staff"></label>
                <input asp-for="StaffBioData.Ethnicity" class="form-control-staff" /><br />
                <span asp-validation-for="StaffBioData.Ethnicity" class="text-danger" style="margin-left:210px;"></span>
            </div>

            

            <!-- Emergency Contact -->
            <div class="form-group">
                <label class="control-label-staff"><b>Emergency Contact:</b></label><br />

                <!-- Emergency Contact Name-->
                <label asp-for="StaffBioData.EmergencyContactName" class="control-label-staff" style="text-align:left;"></label>
                <input asp-for="StaffBioData.EmergencyContactName" class="form-control-staff" /><br />
                <span asp-validation-for="StaffBioData.EmergencyContactName" class="text-danger" style="margin-left:210px;"></span>
                <br /><br />

                <!-- Emergency Contact No-->
                <label asp-for="StaffBioData.EmergencyContactNo" class="control-label-staff" style="text-align:left;"></label>
                <input asp-for="StaffBioData.EmergencyContactNo" class="form-control-staff" /><br />
                <span asp-validation-for="StaffBioData.EmergencyContactNo" class="text-danger" style="margin-left:210px;"></span>
                <br /><br />

                <!-- Emergency Contact Relation-->
                <label asp-for="StaffBioData.EmergencyContactRelation" class="control-label-staff" style="text-align:left;"></label>
                <input asp-for="StaffBioData.EmergencyContactRelation" class="form-control-staff" /><br />
                <span asp-validation-for="StaffBioData.EmergencyContactRelation" class="text-danger" style="margin-left:210px;"></span>
                <br /><br />
            </div>
            <div class="form-group" style="display:none;">
                <label asp-for="StaffBioData.LastModifiedBy" class="control-label"></label>
                <input asp-for="StaffBioData.LastModifiedBy" class="form-control" value="jteena" />
                <span asp-validation-for="StaffBioData.LastModifiedBy" class="text-danger"></span>
            </div>
            <div class="form-group" style="display:none;">
                <label asp-for="StaffBioData.LastModifiedTimestamp" class="control-label"></label>
                <input asp-for="StaffBioData.LastModifiedTimestamp" class="form-control" value="@DateTime.Now" />
                <span asp-validation-for="StaffBioData.LastModifiedTimestamp" class="text-danger"></span>
            </div>
        </div>
    </div>
    <div class="form-group row">
        <div class="col-sm-10">
            <button type="submit" class="btn btn-success" style="margin-left:550px;">Save</button>
        </div>
    </div>
</form>
<partial name="_ValidationScriptsPartial" />

这里发生的事情是我无法使用 TempData 为隐藏变量 STaffID 和 EmpID 设置值。 我做错了什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

由于加载详情页时每个标签下的内容已经填好,所以后面的一些改动不会体现出来。可以在完成的函数中再次请求下一页刷新。

function StaffDetailsCompleted(event) {
    if (event.responseText != "") {
        $("#StaffDetails").html(event.responseText);
    } else {
        alert("Staff Details Has Been Added Successfully");
        $.ajax({
            url: "/Staff/Onboarding/Biodata",
            type: "get",
            success: function (result) {
                $("#Biodata").html(result);
                $('a[href="#Biodata"]').tab('show');
            }
        })
    }
}