更新表结构化项目

时间:2017-11-28 18:22:13

标签: c# asp.net-core asp.net-core-mvc

我正在尝试让用户接受/拒绝某个项目,在表中显示的任何项目中说明原因 PaginatedList

@model PaginatedList<ItemViewModel>

<table>
<thead>
 ...
</thead>

 for (int i = 0; i < Model.Count(); i++){
   var item = Model.ElementAt(i);
   ...
  <tr>
     <td><input asp-for="@item.AdditionalText" type="text" /></td>
     <td>
         <form asp-action="AddAdditionalText" method="post" asp-route-trackID="@item.itemID" asp-route-notes="@item.AdditionalText">
              <input value="Accept Item" type="submit" class="btn btn-success btn-lg">
         </form>
     </td>
     <td>
         <form asp-action="AddAdditionalText" method="post" asp-route-trackID="@item.itemID" asp-route-notes="@item.AdditionalText">
              <input value="Reject Item" type="submit" class="btn btn-success btn-lg">
         </form>
     </td>
  <tr>
  ...

数据被提交给控制器,在操作中,我只看到提交的itemID而不是注释。它是null,因为它不合格。我试过但它没有用。你能建议一个解决方案吗?

1 个答案:

答案 0 :(得分:1)

您应该在提交的form中添加注释。保持AdditionalText的输入元素与提交按钮所在的表单相同。还要在提交按钮上保留名称属性,以便在http post action方法

中知道单击了哪个按钮
<form asp-action="AddAdditionalText" method="post" asp-route-trackID="@item.itemID">
     <input asp-for="@item.AdditionalText" type="text" />
     <input value="Accept Item" name="reason" type="submit" class="btn">
     <input value="Reject Item" name="reason" type="submit" class="btn">
</form>

并在动作方法中。

public ActionResult AddAdditionalText(int trackId,string AdditionalText, string reason)
{
    if (reason == "Accept Item")
    {

    }
    else
    {

    }
    // to do  : return something
}