首先 运行 FileResult 下载文件,然后 RedirectToAction
First run FileResult to download file, then RedirectToAction
这将在按下按钮时发送一封电子邮件。但是,我试图在重定向回按钮页面之前调用 FileResult、SaveDocument 来下载文件。
为了测试,我现在正在使用硬编码文件下载。我可以使用测试按钮 运行 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 中的初始页面的解决方案。如果有人能想出更好的答案,我会把这个去掉。
因此,根据字符串 "listofpositives" 的内容,我调用了一个带有 2 个按钮的新视图 "Has Positives":一个调用 FileResult 操作,一个重定向回一切开始的地方(这是需要的)。
比弹出一个文件另存为对话框然后自动继续要笨拙得多。但我需要建立一些东西并继续前进。我为我的用户感到难过。好吧。
这是我发送电子邮件并 return 到所需视图后的代码:
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>
这将在按下按钮时发送一封电子邮件。但是,我试图在重定向回按钮页面之前调用 FileResult、SaveDocument 来下载文件。
为了测试,我现在正在使用硬编码文件下载。我可以使用测试按钮 运行 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 中的初始页面的解决方案。如果有人能想出更好的答案,我会把这个去掉。
因此,根据字符串 "listofpositives" 的内容,我调用了一个带有 2 个按钮的新视图 "Has Positives":一个调用 FileResult 操作,一个重定向回一切开始的地方(这是需要的)。 比弹出一个文件另存为对话框然后自动继续要笨拙得多。但我需要建立一些东西并继续前进。我为我的用户感到难过。好吧。
这是我发送电子邮件并 return 到所需视图后的代码:
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>