我使用下面的jquery来调用GetFile
方法。
我想根据某些条件生成一个文本文件。这并不总是如此
始终生成文本文件。
如果condition = True,则生成文件
如果condition = False,则返回主页
现在,如果我回来,我只会得到一个空白页面。
我怎么写这个以便考虑我的两个条件?
<script language="javascript" type="text/javascript">
$(document).ready(function () {
$("#Button1").click(function () {
var SelCat = $("#mylist").val();
if (SelCat != 0) {
var data = {
categoryId: SelCat
}
var url = '@Url.Action("GetFile", "Home")' + '?' + $.param(data);
window.location.assign(url);
} else {
alert("You need to select an city");
}
});
});
</script>
public void GetFile(int categoryId)
{
var fileName = "ErrorMessages.txt";
StringBuilder strObj = new StringBuilder();
for (int i = 0; i <= 20000; i++)
{
strObj.Append("Number:" + i + " " + "Here is the first line" );
strObj.Append(Environment.NewLine);
}
strObj.ToString();
// ...
// Based on some conditions determine whether to return a file or not
// return;
Response.Clear();
Response.ContentType = "text/plain";
Response.AddHeader("content-disposition", "attachment; filename=" + fileName );
Response.Write(strObj);
//Response.BinaryWrite(strObj);
Response.End();
}
答案 0 :(得分:3)
IMHO:
GetFile
更改为ActionResult
。return File(memoryStream, "text/plain");
return Redirect("~/Main/Page");
伪代码:
public ActionResult GetFile(Int32 CategoryId)
{
if (/*can be written*/)
{
using (MemoryStream stream = new MemoryStream())
{
using (StreamWriter writer new StreamWriter(stream))
{
/* writer.Write(...); */
}
return File(stream, "text/plain");
}
}
return Redirect("~/main/Page"); // or redirectToRoute/RedirectToAction
}
FWIW:您可以继续使用StringBuilder
并将其传递给其中一个File()
重载,我想我只是喜欢流。 :耸肩: