2016-12-15 74 views
1

我想下載一個JSON文件,當我們點擊下載按鈕時。如何使用Underscore.js模板中的數據呈現Url.Action?

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需要爲我使用Backbone.js的作爲客戶端腳本中使用這些標籤<%= protocolid %>(Underscore.js模板)的約束。

我怎樣才能綁定protocolid到錨標記,這樣當用戶點擊鏈接Download它應該在protocolid發送到getJsonFile()方法?

回答

0

假設由@Url.Action("getJsonFile", "Home")返回的是以下URL形式/home/json-file/的,並且你希望得到:

/home/json-file/1234 

你可以只追加ID:

<a href="@Url.Action("getJsonFile", "Home")<%= protocolid %>">Download</a> 

如果內徑在網址中,我認爲你可以把任意字符串作爲ID在Url.Action(未測試)

@Url.Action("getJsonFile", "Home", new { id = "<%=protocolid%>" }) 

因此,在正確的地方產生的標籤,例如:

/home/get-json/<%=protocolid%>/download/ 

所以,當有下劃線呈現時,<%=protocolid%>正確更換。

+0

Hi Emile Bergeron,感謝您的解答。我對第一個解決方案做了一些改動,它對我來說工作得很好。 ">Download