Ajax 删除/更新/创建后返回成功消息
这是我的Gesagene页面操作:Ajax 删除/更新/创建后返回成功消息,ajax,asp.net-mvc,asp.net-mvc-3,Ajax,Asp.net Mvc,Asp.net Mvc 3,这是我的Gesagene页面操作: public ActionResult GesAgence() { var test = new Models.J2VEntities(); return View(test.agence); } 这是我删除的操作: 所以我想知道如何在删除后返回success消息我尝试使用TempData,但没有成功,因为我的GeAgent必须返回model而不是TempData。您可以通过ajax调用此方法并
public ActionResult GesAgence()
{
var test = new Models.J2VEntities();
return View(test.agence);
}
这是我删除的操作:
所以我想知道如何在删除后返回success消息我尝试使用TempData,但没有成功,因为我的GeAgent必须返回model而不是TempData。您可以通过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);
}
您可以将Success设置为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">
</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">
</div>
</li>
<% } %>
我遇到以下错误:System.NullReferenceException:对象引用未设置为此行对象的实例。您可以使用Ajax从视图页面调用控制器,并弹出消息,无论控制器返回什么,请尝试类似的操作 查看页面上的脚本
我应该在我的查看页面中使用什么脚本?我使用的是ASPX而不是Razor。使用我替换的Viewbagthank,但在我的操作DeleteAg中,我有return viewgesagence并查看gesAgence操作将注意到我无法在我的删除操作中返回viewViewData[成功]。您不必返回ViewData。您应该只设置值。在您的返回视图中,我认为是gesAgence.aspx您检查ViewDataLook这是我的视图页面:AlertSuccess//html代码//代码我收到了以下错误:System.NullReferenceException:对象引用未设置为此行对象的实例我再次更改视图。再试一次。我认为ViewData在第一次使用时为空。我必须更改我的actionLink或否?您不必使用actionLink。只需调用onDeleteAg,这是一个javascript函数。如果你真的想使用actionlink,你需要使用actionlink来调用javascript函数。检查此线程以了解如何执行。我这样叫OnDeleteag:是的。这正是你可以做的,但是你能检查你的函数吗,因为我得到这个错误CS1002:;输入线上的attendu。我认为有一些遗漏或补充{};您如何调用此删除操作?通过JavaScript/ajax或动作链接?Html.ActionLink或ajax.ActionLink?一个发送Ajax请求,另一个执行整页请求。取决于你在做什么,你的选择会改变
<% if(ViewData != null && ViewData["Success"] != null && (bool)ViewData["Success"]){ %>
<script type="text/javascript"> alert("Sucess!");</script>
<% } %>
<div class="clear">
</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">
</div>
</li>
<% } %>
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;
}