MVC - 如何在 LINQ 查询中引用 "this.ID"?

MVC - how to reference "this.ID" in LINQ query?

在我的控制器中,我有一个更新字段的简单方法。我希望它更新 current 记录的字段。类似于:

public IActionResult Approve()
{
    ThisForm update = (from p in _context.ThisForm where p.ThisFormID == [**what do I put here?**] select p).SingleOrDefault();
    update.ApprovalStatus = 'Approved';
    _context.SaveChanges();       
 
    return RedirectToAction("Index");
}

这将是非常简单的事情,但我不知道如何引用此表单的 ID。我已经在我的控制器中定义了该方法,并且在我的视图中将该方法指定为表单中的 asp-action:

<form asp-action="Approve">
        <input type="submit" value="Approve" class="btn btn-outline-success" />
</form>

假设该字段名为“ThisFormID”。

您必须将 ThisFormID 作为参数传递给操作 Approve(),因此它看起来像这样 Approve(int formId),我假设您可以访问此 ThisFormID 当你调用这个动作时。

这取决于 'how' 您正在调用操作 Approve

编辑:

您在提交表单时没有传递任何数据。 您的模型(或更确切的视图模型)应该如下所示:

class FormModel { public int ThisFormID {get;set;} }

(或者您可以将此 ThisFormID 作为视图模型)

您的视图应如下所示:

@model FormModel 

<form asp-action="Approve">
  <input asp-for="ThisFormId" type="hidden" />
  <input type="submit" value="Approve" class="btn btn-outline-success" />
</form>

那么您的操作可能如下所示:

public IActionResult Approve(FormModel formModel)
{
    ThisForm update = (from p in _context.ThisForm where p.ThisFormID == formModel.ThisFormID select p).SingleOrDefault();
    update.ApprovalStatus = 'Approved';
    _context.SaveChanges();       
 
    return RedirectToAction("Index");
}

您可以在此处查找更多示例:

或者 google 如何提交带有参数的表单