这将在按钮被按下时发送电子邮件。然而,我试图调用filerresult, SaveDocument,在重定向回按钮页面之前下载文件。
为了测试,我现在使用硬编码文件下载。我可以使用测试按钮运行SaveDocument()结果。我不能发送电子邮件,运行保存文档操作,然后重定向。
[HttpGet]
public ActionResult send(int thisbatch, string listofpositives)
{
MailMessage mail = new MailMessage();
SmtpClient smtpServer = new SmtpClient("smtperServer");
smtpServer.Port = 25; // Gmail works on this port
smtpServer.EnableSsl = false;
mail.From = new MailAddress("xxxe@xxx.com");
mail.To.Add("xxxe@xxx.com");
mail.Subject = "Batch Closed";
mail.Body="some info stuff here";
smtpServer.Send(mail);
SaveDocument();
return RedirectToAction("AddColiform");
}
//THIS WORKS BY ITSELF CALLED FROM A BUTTON
public FileResult SaveDocument()
{
string filePath = Server.MapPath("~/XML_positives/Test1.xml");
string contentType = "text/xml";
return File(filePath, contentType, "Test1.xml");
}
好吧,没有找到解决方案(到目前为止)下载文件和RedirectToAction回到初始页面在同一个ActionResult。如果有人能想出更好的答案,我就把这个去掉。
所以基于字符串"listofpositive"的内容,我调用一个新的视图"Has positive"有2个按钮:一个调用FileResult动作和一个重定向回到一切开始的地方(这是需要的)。比弹出文件另存为对话框然后自动移动要笨拙得多。但我需要有所建树,然后继续生活。我为我的用户感到遗憾。哦。
以下是我发送电子邮件并返回所需视图后的代码:
if (listofpositives == "")
{
return RedirectToAction("AddColiform");
}
else
{
return RedirectToAction("HasPositives",new { thisbatch=thisbatch, listofpositives=listofpositives});
}
下面是整个额外视图的代码:
@{
ViewBag.Title ="HasPositives" ;
}
<h2>HasPositives</h2>
<p>Batch: @ViewData["batchid"] </p>
<p>Postives: @ViewData["listofpositives"]</p>
<br /><br />
Process your XML file using XMLSampling<br /><br /><br />
<button onclick="location.href='@Url.Action("SaveDocument", "Home")';return false;">Download Positive XML File</button>
<button onclick="location.href='@Url.Action("AddColiform", "Home")';return false;">Done</button>