Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp.net core Razor单选按钮未将所需值传递给控制器_C#_Asp.net Core - Fatal编程技术网

C# Asp.net core Razor单选按钮未将所需值传递给控制器

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

我的表单有一个问题,它没有将单选按钮选择的值传递给控制器,但在调试时成功传递了另一个值。 请注意Job.PublicSubmissionReviewed是布尔值,我注意到this Job.PublicSubmissionReviewed通过了表单。 我在单选按钮上遗漏了什么: 这是我的表格和控制员,非常感谢您的帮助:

<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
属性,代码就可以正常工作:

批准
拒绝