2012-01-26 157 views
1

我需要在删除文件后向用户显示成功消息。不知道该怎么做。请帮忙。删除后显示成功消息

public ActionResult deleteGeneratedInvoice(string invoiceNumber) 
    { 
     try 
     { 
      string fileName = invoiceNumber.Trim() + ".pdf"; 
      string filePath = HostingEnvironment.MapPath("~/Content/reports/"); 
      string fullFilePath = filePath + fileName; 
      System.IO.File.Delete(fullFilePath); 

      //What shall i return here to display message? 
      return 
     } 
     catch (Exception e) 
     { 
      InvoiceSearchTool.Models.udtExceptionTable exception = new udtExceptionTable(); 
      exception.MethodName = "deleteGeneratedInvoice"; 
      exception.Exception = e.ToString(); 
      exception.Date = DateTime.Now; 
      DYNAMICS_EXTEntities db = new DYNAMICS_EXTEntities(); 
      db.AddToudtExceptionTables(exception); 
      db.SaveChanges(); 
      //return View ("Error"); 
     } 
    } 
+0

请解释你对我的答案downvote,并成为一个公平的人,并将其删除。毕竟,我用我的时间试图帮助你,并提出了一个有效的答案.. –

+0

downvoted,因为它不同于我问,试图删除它,但不能因为它被锁定...请不要被冒犯,如果仅仅是声誉问题,我会接受你的答案。 – 14578446

回答

0

//我应该在这里返回以显示消息?

ViewBag.SuccessMessage = "File was successfully deleted"; 
return View(); 

在你deleteGeneratedInvoice看来,写这个地方是有道理的:

<p>@(ViewBag.SuccessMessage ?? "")</p> 
+0

没有任何视图在这里返回,这是我的显示确认消息,因为保持返回类型void显示一个空白窗口。 – 14578446

+0

你可以这样做:“返回内容(”消息“);”但通过返回null你永远不会向任何人展示任何东西.. –

+0

请解释downvote ..我回答了这个问题。如果它不符合你的需求,不是我的错误。 –

0

好吧,如果你在你的应用程序中使用这个动作删除数据,你应该有它发布到服务器中形式和指定一个限制,你的行动,它只响应HttpPost,否则只要有东西试图抓取你的应用程序,你会在一个粗鲁的觉醒:-P

这就是说,你有三个选择返回的信息。你可以返回一个新的页面(如果它是一个空白页面,除了“文件已成功删除”消息),这是一种愚蠢的行为。

或者您可以设置您的表单以使用Ajax回发,方法是使用y Ajax.BeginForm() insend Html.BeginForm()定义您的表单,从而为您提供另外两个选项。要么从你的删除操作中返回一个局部视图,并且在响应完成时(在我眼中最灵活的)让局部视图显示在动态添加的DIV中,或者你可以从你的删除操作中返回一个简单的返回码,然后根据返回码会在您的网页上显示不同的讯息。可以使用BeginForm()方法的AjaxOptions参数定义处理这些响应的Javascript方法。它们是使用OnSuccess,OnErrorOnComplete属性指定的JavaScript方法。请注意,它们不是必需的,但为了获得最佳用户体验,您应确保至少指定成功和错误方法。