2017-07-26 7 views
0

C#を使用せずにASPHXファイルから ASPXファイルにJSONデータを表示する方法を理解する必要があります。私の理論は、ロードの順序のためにJavaScriptを実行できないということです。 Webフォームを使用すると、ASPコントロールのコンテンツプレースホルダ内でハンドルバーテンプレートを使用するにはどうすればよいですか?以下のコードはHTMLをページに返しません。WebフォームでHandlebars.jsを使用する

============= ASPのCODE/HTML =============

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="unprocessed.aspx.cs" MasterPageFile="~/Default.Master" Inherits="SurplusApp.unprocessed" %> 
<asp:content ContentPlaceHolderID="mainContent" runat="server"> 
    <script id="entry-template" type="text/x-handlebars-template"> 
    <div class="entry"> 
    <h1>{{title}}</h1> 
    <div class="body"> 
     {{body}} 
    </div> 
    </div> 
    </script> 
</asp:content> 

====== ========= JSコード=================

var source = $("#entry-template").html(); 
var template = Handlebars.compile(source); 
var context = { title: "My New Post", body: "This is my first post!" }; 
var html = template(context); 

更新#1:

私が発見した何Webフォームページを使用しているときコンテンツプレースホルダータグはスクリプトタグ<script id="entry-template" type="text/x-handlebars-template">をサポートしていませんが、jsファイルにテンプレートコードを追加して、Web開発コンソールにテンプレートをレンダリングすることができます。この例は、ハンドルバーのgithubのページにあります:https://github.com/wycats/handlebars.js/

+0

、まったくその後、ASPを使用するのはなぜ? – maccettura

+0

私は既にマスターページを持っています。 –

+2

HTMLをページに返さないということはどういう意味ですか?あなたはこれを行う試みを示していません。あなたはそれを変数に張り付けるだけです。コードをデバッグしましたか?結果をDOMに追加しようとしましたか?コンソールのエラーを探しましたか? – mason

答えて

0
  1. <asp:content></asp:content>とWebフォームページASPXファイルが<script id="entry-template" type="text/x-handlebars-template">

    を追加することはできませんので、あなたのweb.configファイルにMIMEタイプを追加します。

  2. ハンドルバーテンプレートファイルを作成します。

  3. 私たちがHandbarsレンダリングテンプレートを挿入するために後で使用する一意のIDでdivを作成します。
  4. ASPXページの下部にスクリプトタグを追加し、2つのAJAXハンドラを追加します.1つはJSONフィードのデータを返すハンドラ、もう1つはハンドルバーテンプレートを返すハンドラです。 2回目のAJAX呼び出しでは、ここでHandlebarsから新しく作成されたHTMLを追加します。

    var responseObject;
    $.get('jsonFeed.ashx', function(response){ responseObject = response });
    $.get('handlebarsTemplate.hbs', function(response){
    var template = Handlebars.compile(response);
    var handlebarTemplateInsert = template(responseObject);
    $('#element').append(handlebarTemplateInsert);
    });

関連する問題