C# Asp.net core Razor单选按钮未将所需值传递给控制器
我的表单有一个问题,它没有将单选按钮选择的值传递给控制器,但在调试时成功传递了另一个值。 请注意Job.PublicSubmissionReviewed是布尔值,我注意到this Job.PublicSubmissionReviewed通过了表单。 我在单选按钮上遗漏了什么: 这是我的表格和控制员,非常感谢您的帮助:C# Asp.net core Razor单选按钮未将所需值传递给控制器,c#,asp.net-core,C#,Asp.net Core,我的表单有一个问题,它没有将单选按钮选择的值传递给控制器,但在调试时成功传递了另一个值。 请注意Job.PublicSubmissionReviewed是布尔值,我注意到this Job.PublicSubmissionReviewed通过了表单。 我在单选按钮上遗漏了什么: 这是我的表格和控制员,非常感谢您的帮助: <form asp-action="Review"> <div asp-validation-summ
<form asp-action="Review">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="Job.Id" />
<div class="form-group">
<p><strong>Approve or Reject public submission</strong></p>
<div class="form-group form-check-inline">
<label class="form-check-label">
<input class="form-radio-input" name="status" value="True" type="radio" asp-for="Job.PublicSubmissionReviewed" /> Approve
</label>
</div>
<div class="form-group form-check-inline">
<label class="form-check-label">
<input class="form-check-input" name="status" value="False" type="radio" asp-for="Job.PublicSubmissionReviewed" /> Reject
</label>
</div>
</div>
<div class="form-row showapprove" id="True">
<div class="form-group col-md-6">
<label asp-for="Job.JobCategoryId" class="control-label"></label>
<select asp-for="Job.JobCategoryId" class="form-control" asp-items="ViewBag.JobCategoryId">
</select>
</div>
<div class="form-group col-md-6">
<label asp-for="Job.Name" class="control-label"></label>
<input asp-for="Job.Name" class="form-control" />
<span asp-validation-for="Job.Name" class="text-danger"></span>
</div>
<div class="form-group col-md-6">
<label asp-for="Job.JobNo" class="control-label"></label>
<input asp-for="Job.JobNo" class="form-control" />
<span asp-validation-for="Job.JobNo" class="text-danger"></span>
</div>
<div class="form-group col-md-6">
<label asp-for="Job.ContractorId" class="control-label"></label>
<select asp-for="Job.ContractorId" class="form-control" asp-items="ViewBag.ContractorId">
</select>
</div>
</div>
<div class="form-group">
<button type="submit" class="btn btn-outline-primary"><i class="fas fa-save" aria-hidden="true"></i> Submit</button>
</div>
</form>
public async Task<IActionResult> Review(int id, JobViewModel model)
{
if (id != model.Job.Id)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
var job = _context.Jobs.Where(j => j.Id == id).SingleOrDefault();
if (model.Job.PublicSubmissionReviewed == true) // approve public submission
{
job.PublicSubmissionReviewed = true;
job.PublicSubmissionReviewDate = DateTime.Now;
job.Name = model.Job.Name;
job.New = true;
job.JobNo = model.Job.JobNo;
job.JobCategoryId = model.Job.JobCategoryId;
job.ContractorId = model.Job.ContractorId;
_context.Update(job);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Public));
}
else if (model.Job.PublicSubmissionReviewed == false) // reject public submission
{
job.PublicSubmissionReviewed = true;
job.PublicSubmissionReviewDate = DateTime.Now;
job.New = false;
job.PublicSubmissionRejected = true;
job.PublicSubmissionRejectedDate = DateTime.Now;
job.PublicSubmissionReviewRejectReason = model.Job.PublicSubmissionReviewRejectReason;
_context.Update(job);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Public));
}
}
catch (DbUpdateConcurrencyException)
{
if (!JobExists(model.Job.Id))
{
return NotFound();
}
else
{
throw;
}
}
}
return View(model);
}
批准或拒绝公开提交
批准
拒绝
提交
公共异步任务审阅(int-id,JobViewModel)
{
if(id!=model.Job.id)
{
返回NotFound();
}
if(ModelState.IsValid)
{
尝试
{
var job=_context.Jobs.Where(j=>j.Id==Id.SingleOrDefault();
if(model.Job.publicSubmissionRevieved==true)//批准公共提交
{
job.publicssubmissionrevieved=真;
job.PublicSubmissionReviewDate=DateTime.Now;
job.Name=model.job.Name;
job.New=true;
job.JobNo=model.job.JobNo;
job.JobCategoryId=model.job.JobCategoryId;
job.ContractorId=model.job.ContractorId;
_上下文更新(作业);
wait_context.SaveChangesAsync();
返回重定向到操作(名称(公共));
}
else if(model.Job.publicSubmissionRevieved==false)//拒绝公共提交
{
job.publicssubmissionrevieved=真;
job.PublicSubmissionReviewDate=DateTime.Now;
job.New=false;
job.PublicSubmissionRejected=真;
job.PublicSubmissionRejectedDate=DateTime.Now;
job.PublicSubmissionReviewRejectReason=model.job.PublicSubmissionReviewReason;
_上下文更新(作业);
wait_context.SaveChangesAsync();
返回重定向到操作(名称(公共));
}
}
catch(DbUpdateConcurrencyException)
{
如果(!Job存在(model.Job.Id))
{
返回NotFound();
}
其他的
{
投掷;
}
}
}
返回视图(模型);
}
表单元素中的name
HTML属性是提交表单后将发送到服务器以标识该字段的内容。Razor的模型绑定要求表单字段具有特定名称,而asp for
会自动为您设置该名称。因为您已经手动指定了一个名称,所以模型绑定器将无法识别该字段,因此不会在您的模型中设置它
看起来您正在设置名称以便将单选按钮组合在一起。由于asp for
将对给定的绑定属性使用相同的名称,因此您不必担心这一点;与某个属性对应的所有单选按钮将分组在一起
因此,只需删除name
属性,代码就可以正常工作:
批准
拒绝