我在点击下载按钮时尝试下载JSON文件。
public ActionResult getJsonFile(Guid ProtocolId)
{
List<Country> lst = new List<Country>();
for (int i = 1; i <= 10; i++)
{
lst.Add(new Country() { CountryId = i, CountryName = "India" + i });
}
string jsondata = new JavaScriptSerializer().Serialize(lst);
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(jsondata);
return File(bytes, "application/json", "JsonData.json");
}
如果我没有向此方法发送任何参数(ProtocolId
),此代码可以正常使用。
<script type="text/ng-template">
<button type="button" onclick="location.href='@Url.Action("getJsonFile", "Home")">Download</button>
</script>
这里,protocolid
需要使用这些标签<%= protocolid %>
(Underscore.js模板)进行绑定,因为我使用Backbone.js作为客户端脚本。
如何将protocolid
绑定到锚标记,以便当用户点击Download
链接时,它应该将protocolid
发送到getJsonFile()
方法?
答案 0 :(得分:0)
假设@Url.Action("getJsonFile", "Home")
返回的网址格式为/home/json-file/
,并且您希望获得该网址:
/home/json-file/1234
您可以添加ID:
<a href="@Url.Action("getJsonFile", "Home")<%= protocolid %>">Download</a>
如果id在url中,我认为你可以在Url.Action
(未测试)中将任意字符串作为id:
@Url.Action("getJsonFile", "Home", new { id = "<%=protocolid%>" })
因此它会在正确的位置生成标签,例如:
/home/get-json/<%=protocolid%>/download/
因此,当使用下划线渲染时,<%=protocolid%>
会被正确替换。