2016-12-15 7 views
1

ダウンロードボタンをクリックしたときにJSONファイルをダウンロードしようとしています。私は、このメソッドに任意のパラメータ(ProtocolId)を送信しない場合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"); 
} 

このコードは、私のために正常に動作します。ここで

<script type="text/ng-template"> 
    <button type="button" onclick="location.href='@Url.Action("getJsonFile", "Home")">Download</button> 
</script> 

は、protocolidは、私は、クライアント側のスクリプトとしてBACKBONE.JSを使用していて、これらのタグ<%= protocolid %>(Underscore.jsテンプレート)を使用してバインドする必要があります。ユーザーがDownloadリンクをクリックしたときに、それはgetJsonFile()方法にprotocolidを送信する必要がありますように、私はアンカータグにprotocolidをバインドするにはどうすればよい

@Url.Action("getJsonFile", "Home")によって返されたURLを想定し

答えて

0

は次の形式/home/json-file/のものであり、あなたが得るために探していること:

/home/json-file/1234 

あなただけのIDを追加することもできます

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

idがある場合URL内で、私はあなたがidとして任意の文字列を置くことができると思います。 (テストされていません)

0アンダースコアでレンダリングされたときに、それが正しい場所にタグを生成

、例えば:

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

Soは、<%=protocolid%>が正しく置き換えられます。

+0

こんにちはEmile Bergeron、ありがとうございました。私は第1の解決策にほとんど変更を加えず、それは私にとってうまくいった。 ">Download

関連する問題