2013-03-29 65 views
1

我正在制作一个存储客户端的页面。客户可以拥有域名,联系人和工作。 每个联系人/域/作业都具有编辑/删除功能。模式删除按钮不工作asp.net

我正在使用MVC 4 ASP.NET c# 每次你想编辑/删除它启动一个模态窗体。
联系人和域的删除视图除了显示的字段完全相同外。域删除功能在局部视图中不会触发任何内容。但是,当它作为常规视图导航到网址时,它会成功。联系人删除在局部视图中正常工作。

@model STClient.Models.Domain 

@{ 
    ViewBag.Title = "DeleteDomain"; 
} 

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script> 

@using (Html.BeginForm("DeleteDomain", "Client", FormMethod.Post)) { 
    <div class="modal-header"> 
     <h2>Are you sure you want to delete?</h2> 
    </div> 
    <div class="modal-body"> 
     <fieldset> 
      <div class="display-label"> 
       <h3> 
        @Html.HiddenFor(model => model.server.ID) 
        @Html.HiddenFor(model => model.ID) 
        @Html.DisplayNameFor(model => model.Name): 
        @Html.DisplayFor(model => model.Name) 
       </h3> 
      </div> 
      <div class="display-label"> 
       <h5> 
        @Html.DisplayNameFor(model => model.Registrar): 
        @Html.DisplayFor(model => model.Registrar) 
       </h5> 
      </div> 
      <div class="display-label"> 
       <h5> 
        @Html.DisplayNameFor(model => model.PrimaryDNS): 
        @Html.DisplayFor(model => model.PrimaryDNS) 
       </h5> 
      </div> 
      <div class ="display-label"> 
       <h5> 
        @Html.DisplayNameFor(model => model.SecondaryDNS): 
        @Html.DisplayFor(model => model.SecondaryDNS) 
       </h5> 
      </div> 
     </fieldset> 
    </div> 
    <div class="modal-footer"> 
     <a class="btn" href="">Cancel</a> 
     <input class="btn btn-danger" type ="submit" value="Delete" /> 
    </div> 
} 

这是在删除链接是域的详细信息页面。

<div class="modal fade" id="deleteDomain-modal"></div> 


<script type="text/javascript"> 
    $(function() { 
     $(".deleteDomain").click(function() { 
      $.ajax({ 
       url: "/Client/DeleteDomain", 
       type: "GET", 
       data: {id: $(this).attr('id')}, 
       dataType: "html", 
       success: function(e) 
       { 
        $("#deleteDomain-modal").html(e); 
       } 
      }); 
      $("#deleteDomain-modal").modal(); 
     }); 
    }); 
    </script> 

终于在客户机控制器

public ActionResult DeleteDomain(int id) 
    { 
     Domain domain = db.Domains.Find(id); 
     if (domain == null) 
     { 
      HttpNotFound(); 
     } 
     return PartialView(domain); 
    } 

    [HttpPost, ActionName("DeleteDomain")] 
    public ActionResult DeleteDomainConfirmed(int id) 
    { 
     Domain domain = db.Domains.Find(id); 
     Server server = db.Servers.Find(id); 
     db.Domains.Remove(domain); 
     db.SaveChanges(); 
     db.Servers.Remove(server); 
     db.SaveChanges(); 
     LogDeleteDomain(domain, server); 
     return RedirectToAction("Index"); 
    } 
+0

您是否尝试过使用Fiddler来确保其路由到正确的URL?另外,Contact(工作的)是否调用相同的Controller和Action(Client/DeleteDomain)? –

+0

我尝试过使用fiddler,但没有捕捉任何东西,因为删除按钮没有触发任何东西。联系人删除函数调用客户端/ deletecontact – Gina

+0

请分享您的部分视图DeleteDomain –

回答

0

我想我也有类似的问题。原因是参数值是作为字符串发送的,而不是整数。我必须投入价值。因此,在你的脚本代码,你可以尝试改变行:

data: {id: $(this).attr('id')}, 

到:

data: {id: parseInt($(this).attr('id'))}, 

这解决了我的问题。

+0

,只是使它根本不会触发模式。该域的ID正在模式罚款其只是删除按钮不触发点击事件。只有在模态。如果你直接映射到url,那么它工作正常 – Gina

+0

@Gina你是否试图在表单中使用“DeleteDomainConfirmed”而不是“DeleteDomain”,可能也没有ActionName(“DeleteDomain”)属性? – developer10214

+0

是的,我也尝试过,它没有工作 – Gina