0

我使用 jquery 调用此操作

public ActionResult Delete(int Id){
   Schedule schedule = context.Schedules.FirstOrDefault(s => s.Id == Id);
   try{
       context.Schedules.Remove(schedule);
       context.SaveChanges();
       TempData["Message"] = "Succesfully removed schedule.";
       return Content(Boolean.TrueString);
   }catch(Exception ex){
       TempData["Message"] = "Something went wrong";
       return Content(Boolean.FalseString);
   }

}

在我看来,我有一个 div 处理来自主控的 TempData["Message"]

<div id="messages">
 <% if(ViewContext.TempData["Message"] != null { %>
     <div class="alert">
        <%: ViewContext.TempData["Message"] %>
     </div>
  <% } %>
</div>

这正是我的 jquery 的样子。使用 Boolean.TrueString / FalseString 返回。我不确定这是否是正确的方法,因为我仍然开始学习带有动作的 jquery。

http://ricardocovo.com/2010/09/02/asp-mvc-delete-confirmation-with-ajax-jquery-ui-dialog/

基本上我的目标是能够显示任何错误,或通知用户任何错误或需要完成这些步骤的任何说明。是否考虑过使用 JSON 作为返回类型?我不确定如何处理它。

非常感谢任何建议。

4

3 回答 3

0

您正在使用 ajax 调用;视图不会再次完全渲染;例如,为了能够显示一条消息,您必须将其作为 json 返回并在 jquery 回调中处理它。

于 2012-08-03T05:55:06.060 回答
0

在这种情况下,您应该使用 ViewData 而不是 TempData。TempData 用于在请求之间临时存储一些东西。它在幕后使用 Session 对象。就像在 Post->Redirect->Get 中一样。

在您的情况下,您在同一请求中使用数据。所以不需要 TempData。

于 2012-08-03T05:56:33.883 回答
0

当您使用 jQuery 调用此函数时,您将其称为异步。这是由 AJAX 完成的,并且以 JSON 格式返回消息要容易得多:

Response.Write('{"message":"foo"}');

在 jQuery 中,您只需在 ajax 请求完成时调用对话框:

$.ajax({
  url: "test.aspx"
}).done(function(data) { 
  $(".alert").text(data.message);
  $("#messages").dialog();
});
于 2012-08-03T05:59:11.477 回答