2012-04-10 86 views
0

这是我GesAgence页行动:返回更迭消息后删除/更新/创建

 public ActionResult GesAgence() 
    { 
     var test = new Models.J2VEntities(); 
     return View(test.agence); 
    } 

这是我Deleting行动:

 public ActionResult DeleteAg(string id) 
    { 
     Models.J2VEntities entity = new Models.J2VEntities(); 

     Models.agence model = (from p in entity.agence 
           where p.Idag == id 
           select p).SingleOrDefault(); 

     //Sauvgarde ds la BD 
     entity.agence.DeleteObject(model); 
     entity.SaveChanges(); 
     return View("gesAgence"); 
    } 

所以我wondring如何返回更迭消息删除后(我尝试使用TempData,但没有成功,因为我的gesAgence必须返回模型而不是TempData)。

+0

你是怎么称呼这个删除操作的?通过JavaScript/ajax或从动作链接? – cecilphillip 2012-04-10 15:51:17

+0

我正在使用actionLink – Chlebta 2012-04-10 18:13:00

+0

Html.ActionLink或Ajax.ActionLink?一个发送一个Ajax请求,一个发送一个完整页面请求。根据你在做什么,你的选项变化 – cecilphillip 2012-04-10 19:02:01

回答

0

您可以使用Ajax从您的视图中调用您的控制器,并在您的控制器返回任何内容时弹出消息,尝试类似这样的操作。

您的查看页面上的脚本。控制器上

function onDeleteAg (id) { 
     var answer = confirm("Are you sure you want to delete AG ?") 
     if (answer) { 
      $.ajax(
       { 
        type: "Get", 
        url: '<%= Url.Action("DeleteAg","YourControllerName") %>', 
        data: { agId: id }, 
        success: function (data) {       
         //HERE--data is the message you that your controller DeleteAg method will return after it's called. you need to do something here to display this message(data) anywhere you want to . something like below. 
         alert(data);       

        }, 
        error: (function() { alert("Error! Ag was not deleted."); }) 
       }); 
     } 
    }; 

方法。

public string DeleteAg(string agId) 
    { 
     try{ 

     Models.J2VEntities entity = new Models.J2VEntities(); 

     Models.agence model = (from p in entity.agence 
           where p.Idag == id 
           select p).SingleOrDefault(); 

     //Sauvgarde ds la BD 
     entity.agence.DeleteObject(model); 
     entity.SaveChanges(); 
} 
     catch(Exception ex) 
     { 
      return "AG has not been deleted successfully; 
     } 

     return "AG has been deleted successfully; 
    } 
+0

我必须改变我的动作链接或否? – Chlebta 2012-04-10 13:45:13

+0

您不必使用actionLink。只需调用DeleteAg,这是一个JavaScript功能。 如果你真的想使用actionlink,你需要让你的actionLink来调用这个javascript功能。检查这个线程看看如何。 http://stackoverflow.com/questions/1889145/mvc-actionlink-with-javascript – 2012-04-10 14:00:22

+0

像这样我打电话OnDeleteag: ''input type =“button”value =“test”onclick =“onDeleteAg(<%item .Idag%>)“/>' – Chlebta 2012-04-10 14:11:07

0

你可以调用通过ajax此方法并返回JsonResult代替的ActionResult的,通过看结果可以显示消息给用户。

public JsonResult DeleteAg(string id) 
{ 
    Models.J2VEntities entity = new Models.J2VEntities(); 

    Models.agence model = (from p in entity.agence 
          where p.Idag == id 
          select p).SingleOrDefault(); 

    //Sauvgarde ds la BD 
    entity.agence.DeleteObject(model); 
    entity.SaveChanges(); 
    var json = new 
      { 
       success = true 
      }; 
    return Json(json); 
} 
+0

我的视图页面应该使用什么脚本? – Chlebta 2012-04-10 11:15:23

0

可以在视图设置成功对ViewBag

public ActionResult DeleteAg(string id) 
    { 
     Models.J2VEntities entity = new Models.J2VEntities(); 

     Models.agence model = (from p in entity.agence 
           where p.Idag == id 
           select p).SingleOrDefault(); 

     //Sauvgarde ds la BD 
     entity.agence.DeleteObject(model); 
     entity.SaveChanges(); 

     ViewData["Success"] = true; 

     return View("gesAgence"); 
    } 

@if(ViewData["Success"] != null && (bool)ViewData["Success"]){ 
    <script>alert("Sucess!");</script> 
} 

这是我的看法:

<% if(ViewData != null && ViewData["Success"] != null && (bool)ViewData["Success"]){ %> 
    <script type="text/javascript"> alert("Sucess!");</script> 
<% } %> 
     <div class="clear"> 
       &nbsp; 
      </div> 
      <div id="main"> 
      <h1> Demande preinscrit</h1> 
      <ul class="listing"> 
    <% foreach (var item in Model) { %> 
       <li> 
       <div class="listinfo"> 
        <h3> 
         <%: Html.DisplayFor(modelItem => item.Nomag) %> 
        </h3> 
        <p> 
         <%: Html.DisplayFor(modelItem => item.Idag) %> 
        </p> 
        <span class="price"> <%: Html.DisplayFor(modelItem => item.Adrag) %> <%: Html.DisplayFor(modelItem => item.Vilag) %> <%: Html.DisplayFor(modelItem => item.Gov) %></span> <span class="media">Tel : <%: Html.DisplayFor(modelItem => item.Telag) %> |</span> <%: Html.DisplayFor(modelItem => item.Mailag) %> 
        </div> 
        <div class="listingbtns"> 
        <span class="listbuttons"><%: Html.ActionLink("Bloque", "Bloque", new {id= item.Idag}) %> </span> 
        <span class="listbuttons"><%: Html.ActionLink("Supprime", "DeleteAg", new { id = item.Idag })%></span> 
        </div> 
        <div class="clear"> 
        &nbsp; 
        </div> 
       </li> 
    <% } %> 

我得到这个错误:System.NullReferenceException: Object reference not set to an instance of an object在这条线<% foreach (var item in Model) { %>

+0

我正在使用ASPX而不是Razor。我用'ViewData'替换' – Chlebta 2012-04-10 11:17:14

+0

我用'ViewData'改变了' – Yorgo 2012-04-10 11:18:25

+0

谢谢,但是在我的动作'DeleteAg'中我有'return view(“gesagence”)'看看'gesAgence'行动会注意到我不能在我的删除操作 – Chlebta 2012-04-10 11:31:41