我正在尝试让用户接受/拒绝某个项目,在表中显示的任何项目中说明原因 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,因为它不合格。我试过但它没有用。你能建议一个解决方案吗?
答案 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
}