寻找一种更清晰/更好的方式来确认删除行

时间:2016-04-19 21:52:27

标签: asp.net-mvc

我是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而且我想要去掉它。

0 个答案:

没有答案