我正在开发一个MVC web应用程序。我需要下载一个文件,我已经存储为一个字节[]流在数据库和它的工作正常。我曾经做过的一个按钮单击我调用一个JS函数,并在C#后端调用一个函数,并最终下载文件。以下是我的JQuery代码。MVC Web应用程序如何在没有Request.Querystring的情况下获取参数?
var DownloadDRR = function()
{
var InvoiceId = $(".invoiceid").text();
location.href = location.origin + "/Invoicing/DownloadDRR?InvoiceId=" + InvoiceId;
}
而在后端我通常得到的查询字符串这样
Request.Querystring("InvoiceId");
但偶然的,我在我的应用程序发现,如果我写了下面的它仍然得到InvoiceId
不使用Request.QueryString()
。
public FileResult DownloadDRR(int InvoiceId)
{
InvoicingService Invoices = new InvoicingService(Client);
byte[] RawExcel = Invoices.GetExcelService(InvoiceId);
MemoryStream stream = new MemoryStream(RawExcel);
stream.Seek(0, SeekOrigin.Begin);
return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "test.xlsx");
}
任何人都可以解释为什么请吗?
这是自动MVC模型绑定。这解释了很多细节,回答了方式和原因:http://www.codeproject。com/Articles/710776/Introduction to ASP-NET-MVC-Model-Binding-An-Absol ..这正是你应该做的事情。即使是复杂的对象,如“Person person”或“List myList”。正确的MVC不应该需要Request.Querystring()或FormCollection(除非在特别的动态参数或日志记录中) –
arserbin3
@ arserbin3您应该将其作为答案 –