我发现自己这样做了:
<table>
<tr>
<th>Code</th>
<th>Enabled</th>
<th>Percentage</th>
<th>Amount</th>
<th>Start</th>
<th>End</th>
<th>Action</th>
</tr>
@foreach(var item in Model)
{
<tr>
<td>@Html.ActionLink(item.Code, "Edit", new { id = item.Id })</td>
<td>@item.Enabled ? "Yes" : "No"</td>
<td>@item.Percentage</td>
<td>@item.Amount</td>
<td>@item.StartDate</td>
<td>@item.EndDate</td>
<td>
@using (Html.BeginForm("Delete", "Discounts", new { id = item.Id }))
{
<input type="submit" value="Delete" />
}
</td>
</tr>
}
</table>
我停下来的原因是因为我在每一行都有一个表格,作为一个好习惯,将整个表格包裹在一个表格中会更好吗?
我可能已经知道了答案,但我想我会检查: - )
答案 0 :(得分:6)
我想说这取决于你的具体情况。
根据我目前对你情况的了解,我可能会选择你现在所拥有的,只因为它很干净。
答案 1 :(得分:2)
我认为你的方法很好,而且往往是最好的方法。例如如果您正在编写一个带有像stackoverflow这样的投票系统的应用程序(选择的例子,因为您现在正在查看这样的应用程序)并且您希望使用HttpPost
来实现投票机制,那么您可以创建一个小控件上下按钮作为单独的形式*。这样,您可以轻松地向页面添加任意数量的此类“小部件”,并且包含页面不需要知道任何有关它们的信息(包括它们是否存在)。实际上,你可以使用不引人注目的javascript来提交表单并重新加载投票“小部件”并使用故障恢复来重新加载页面如果关闭javascript并且它看起来都很漂亮。
*注意:我不认为他们是如何在stackoverflow上做的,请注意!
非AJAX故障回复可能是这样的:
[HttpPost]
[OutputCache(Location = OutputCacheLocation.None, NoStore = true)]
public ActionResult DoThing(whatever params you are passing in)
{
// Do stuff and then...
if (Request.IsAjaxRequest)
{
return View("_partialThingView", thingViewModel);
}
else
{
RedirectToAction("Index");
}
}
答案 2 :(得分:0)
我认为这是最好的方法,除非要实现批量删除功能(您的HTML代码告诉我情况并非如此)。
通过为每个项目使用表单(使用POST方法),确保
http://[yoursite]/[yourapp]/[delete_method]/[item_id_to_delete]
而意外删除项目。 所以,按照你目前的方法。 (我的0.02欧元)