【发布时间】:2015-11-18 23:40:28
【问题描述】:
MVC 新手在这里找不到足够简单的解释。
我刚刚开始使用 MVC 构建一个相当大的应用程序。
在我使用的控制器中,大多数ActionResults 都附加了[HttpGet] 属性。所以我正在构建该代码,我自己构建了两个ActionResults,但关闭了[HttpGet] 属性。
这些调用数据库层,然后将结果返回给视图。他们工作正常。当我注意到他们没有[HttpGet] 时,我添加了它们,然后呼叫停止工作。我不知道为什么,或者他们必须在那里的押韵和理由。
这是我从视图中拨打的电话:
function getExcelExport() {
var activePane = $('div.tab-pane.active');
var agencyCompany = $(activePane).find('#Agency_AgencyId').val();
if (!$(activePane).find('#form0').valid()) { return false; }
var month = $(activePane).find('#CommissionMonth').val();
var year = $(activePane).find('#CommissionYear').val();
window.location = 'AgencyManagement/GetCommissionsExcel?agencyID=' + agencyCompany + '&month=' + month + '&year=' + year;
};
这是控制器中的操作:
public ActionResult GetCommissionsExcel(string agencyid, string month, string year)
{
try
{
var as400rep = new iSeriesRepository(new iSeriesContext());
var results = as400rep.GetCommissionExcel(agencyid, month, year);
string xml = String.Empty;
XmlDocument xmlDoc = new XmlDocument();
XmlSerializer xmlSerializer = new XmlSerializer(results.GetType());
using (System.IO.MemoryStream xmlStream = new System.IO.MemoryStream())
{
xmlSerializer.Serialize(xmlStream, results);
xmlStream.Position = 0;
xmlDoc.Load(xmlStream);
xml = xmlDoc.InnerXml;
}
var fName = string.Format("CommissionsExcelExport-{0}", DateTime.Now.ToString("s"));
fName = fName + ".xls";
byte[] fileContents = System.Text.Encoding.UTF8.GetBytes(xml);
return File(fileContents, "application/vnd.ms-excel", fName);
}
catch (Exception ex)
{
Log.Error(ex.Message, ex.InnerException);
throw;
}
}
对此有简单的解释吗?
【问题讨论】:
-
您是如何呼吁采取行动的?如果是 Ajax,您是否将类型指定为 GET 或 POST