我是ASP.NET MVC的新手,而不是Javascript / jQuery那么棒。
我的最终目标是向用户提供删除链接以从表中删除行。我希望将其作为POST操作而不是GET,因为据我所知,POST是最佳实践。我想在删除之前添加一个确认对话框,但我不想使用丑陋的javascript确认对话框,我在表单提交时遇到问题而没有等待jQuery对话框被回答。因此,我将提交按钮变为常规按钮,并添加了一个onclick事件,该事件调用ConfirmDelete javascript方法,在该方法中我显示自定义jQuery确认对话框。如果回答是肯定的,我会使用用户想要删除的记录的密钥(密钥=供应商ID和生效日期)按ID查找表单。找到ethe表单后,我使用Javascript提交表单。
-------------------
public static class DateTimeExtensions
{
public static long ToLong(this DateTime value)
{
return long.Parse(value.ToString("yyyyMMddHHmmss"));
}
}
---------------------------------------
@using (Html.BeginForm("Delete", "StateAssessment", new
{
vendorId = Model.VendorId,
effectiveDate = Model.EffectiveDate
},
FormMethod.Post,
new { @id = "Form_" + Model.VendorId + "_" + @Model.EffectiveDate.ToLong() }
))
{
<tr>
<td>
@Html.DisplayFor(modelItem => Model.VendorId)
</td>
<td>
@Html.DisplayFor(modelItem => Model.EffectiveDate)
</td>
<td>
@Html.DisplayFor(modelItem => Model.LastTimeStamp)
</td>
<td>
@Html.ActionLink("Edit", "Edit",
new
{
vendorId = Model.VendorId,
effectiveDate = Model.EffectiveDate
})
<input value="Delete" class="btn btn-link" onclick="@string.Format("ConfirmDelete('{0}','{1}')", Model.VendorId, Model.EffectiveDate.ToLong())" />
</td>
</tr>
}
<script type="text/javascript">
function ConfirmDelete(vendorId, effectiveDate) {
var $myDialog = $('<div></div>')
.html('Are you sure that you want to delete this State Assessment?')
.dialog({
modal: true,
autoOpen: false,
title: 'Delete Confirmation',
buttons: {
"OK": function () {
$(this).dialog("close");
var form = $("#Form_" + vendorId + "_" + effectiveDate);
form.submit();
return true;
},
"Cancel": function ()
{
$(this).dialog("close");
return false;
}
}
});
$myDialog.dialog('open');
}
</script>
如您所见,表单的ID由文字&#34; Form _&#34;构成。与供应商ID和EffectiveDate键连接,其中EffectievDate值被规范化为可在ID中使用的值。
这一切都很有效,但是男人,它看起来很丑陋,而且很长时间啰嗦,特别是当我认为在WinForms中只需几行代码就可以轻松完成。我正在寻找更好的方法。我认为这段代码已经写了noob而且我想要去掉它。