呼叫控制器's方法
Calling Controller's method from Javascript in View
我正试图通过View 中的Javascript访问控制器中的一个方法
<div id="Historicaldata">
From Date <input type="date" id="fromDate" /> To Date <input type="date" id="toDate" />
<a href="#" id="ExportExcel" onclick="GetFromDate()">Export to Excel</a>
</div>
<script>
function GetFromDate() {
var dt1 = document.getElementById('fromDate').value;
var dt2 = document.getElementById('toDate').value;
var url = "~/GeneralStatics/Excel/" + "startdate=" + dt1 + "/endDate=" + dt2;
alert(url);
window.location.href = this.href + "startDate=" + document.getElementById('fromDate').value + "&endDate=" + document.getElementById('toDate').value;
return false;
};
</script>
在我的控制器中有这样的避免方法:
public void Excel(DateTime startDate, DateTime endDate)
通过它可以下载Excel文件。最好的方法是什么?是否可以在不重定向的情况下进行?
您不需要javascript,可以将输入字段放在HTML表单中:
@using (Html.BeginForm("Excel", "SomeControllerName", FormMethod.Post))
{
<div id="Historicaldata">
From Date <input type="date" name="startDate" />
To Date <input type="date" name="endDate" />
<button type="submit">Export to Excel</button>
</div>
}
还要确保您的操作参数与输入字段的名称匹配,不要忘记在ASP.NET MVC中,柔术操作必须返回ActionResults,而不是void:
public ActionResult Excel(DateTime startDate, DateTime endDate)
{
...
}
使用AJAX下载文件:
$.ajax({
url: '@Url.Action("Excel", "GeneralStatics")',
contentType: 'application/json; charset=utf-8',
datatype: 'json',
type: "GET",
success: function () {
window.location = '@Url.Action("Excel", "GeneralStatics", new { @startDate= dt1 , @endDate = dt2 })';
}
});
相关文章:
- Jquery事件绑定获胜'当作为方法调用时不起作用,但当直接在控制台中调用时会起作用
- 为什么参数对象没有在控制台中显示它的方法
- 访问控制允许方法不允许删除
- 任何控制Javascript异步加载顺序的方法
- 这个get方法似乎可以工作,但控制台中存在错误
- 使用DDE通过Javascript控制Bloomberg-Object dos't支撑方法
- 返回流星呼叫方法
- 每次都需要我们的应用模块在控制台中进行调试的替代方法
- 如何将包含猫鼬函数的方法与控制流框架(例如异步或 Step)一起使用
- 有没有一种明确的方法来找出在FF的开发者控制台中调用函数的位置
- 经典 ASP 流控制的替代方法
- 调用 JavaScript 方法进行 asp.net 控制不起作用
- 如何在标头中使用访问控制允许方法
- 控制这些计时器的最佳方法是什么
- 向 Web 窗体中的控制方法发出 ajax 请求
- 从 ajax 请求将控制信号发送回客户端的最佳实践方法是什么?
- 如何使用 ExtJS 4 中控制器的控制方法更改范围
- 是否有任何方法来控制使用JavaScript滚动条
- 捕获页面标题的通用方法,控制标签
- 使用.seek()方法手动控制Netflix播放器