MVC开发中LINQ查询如何引用当前表单的ThisFormID值
解决方法
你需要同时修改控制器方法和视图代码,两步即可实现需求:
第一步:修改控制器的Approve方法,添加参数接收ID
给Approve方法加一个int类型的ThisFormID参数,ASP.NET Core会自动把表单提交的对应字段值绑定到这个参数上,同时建议加空引用判断避免空异常:
public IActionResult Approve(int ThisFormID) { ThisForm update = (from p in _context.ThisForm where p.ThisFormID == ThisFormID select p).SingleOrDefault(); // 空判断防止找不到记录时触发空引用异常 if (update == null) { return NotFound(); } // 注意:字符串要用双引号包裹,单引号是char类型的写法,原写法会报错 update.ApprovalStatus = "Approved"; _context.SaveChanges(); return RedirectToAction("Index"); }
第二步:修改视图表单,添加隐藏域传递当前记录的ThisFormID
在表单内部新增一个隐藏的input控件,值绑定当前视图模型的ThisFormID即可:
<form asp-action="Approve"> <!-- 新增隐藏域传递当前表单ID,只要name属性和控制器参数名一致就能自动绑定 --> <input type="hidden" asp-for="ThisFormID" /> <input type="submit" value="Approve" class="btn btn-outline-success" /> </form>
补充说明:如果你的视图没有强绑定模型,也可以把隐藏域写成
<input type="hidden" name="ThisFormID" value="@你的当前ID变量" />,效果一致。
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

