当我们单击下载按钮时,我正在尝试下载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
(Underscore.js模板)来绑定<%= protocolid %>
,因为我正在使用Backbone.js作为客户端脚本。如何将
protocolid
绑定到锚标记,以便当用户单击Download
链接时,应将protocolid
发送到getJsonFile()
方法? 最佳答案
假设@Url.Action("getJsonFile", "Home")
返回的url的格式为/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%>
将被正确替换。