我有一个包含多个选项卡中的多个表单的剃刀页面。当我提交表单时,它将与另一个一起转到下一个选项卡。我想将两个 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 设置值。 我做错了什么。任何帮助将不胜感激。
答案 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');
}
})
}
}