在ASP.Net Core网络应用中,我通过List<Parameter>
将ViewBag.Parameters
传递给了一个视图。该视图还有SelectParameterViewModel
,仅由一个属性int ParameterId
组成。然后这些对象显示在一个像这样的表中(我直接跳到tbody,因为从化妆品的角度来看,视图工作正常):
@model WebApp.Models.ReportViewModels.SelectParameterViewModel
[...]
<tbody>
@foreach (var item in ViewBag.Parameters)
{
<tr>
<td class="col-xs-1">
<form asp-controller="Report" asp-action="Launch">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input asp-for="@Model.ParameterId" type="hidden" value="@item.Id" />
<input type="submit" class="btn btn-primary btn-sm" value="Select" />
</form>
</td>
<td class="col-xs-8">@item.Description</td>
<td class="col-xs-3">
<a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
<a asp-action="Details" asp-route-id="@item.Id">Details</a> |
<a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
</td>
</tr>
}
</tbody>
我希望用户点击所选表格行的按钮并提交该行的Parameter
(首选)或Parameter
的{{1}},就像我试过的那样在这种情况下做。然后我会对第三列的Id
标记执行相同的操作。关键是我不希望用户只是简单地键入<a>
并运行报告,因为每个用户都有自己的参数集,不应该被允许使用任何其他参数和ViewBag仅包含其/Report/Launch/id
的列表。我可以根据解决方案更改视图模型和/或接收控制器的参数,两者都可以。我尝试了以上html的几个版本,但没有一个可行,而上面的回报Parameter
的值为ParameterId
。
在其他SO问题中我找不到类似的场景。有些解决方案涉及JavaScript,如果我错了,请纠正我,但仍会在网页源中显示0
值。虽然在这种特定情况下这种情况会很好,但我还有其他情况,我绝对不希望这种情况发生。
实现这一目标的优雅解决方案是什么?谢谢!