0

私はマークダウンを使用して**test**いて、単語テストを太字のテストで表示するなどの入力があり、そのようにhtmlで変換しました。」

                var converter1 = Markdown.getSanitizingConverter();
                var editor1 = new Markdown.Editor(converter1);
                editor1.run();

                var d = document.getElementById("wmd_input");
                var html = converter1.makeHtml(d.value);
                alert(html);

そして、これは問題を警告<b>test</b>します。つまり、この値を取得し、<b>test</b>サーバー側のコード(asp.net)を介してこれにアクセスする必要があります。私はそれを次のような変数に割り当ててみました:

                document.getElementById("Label1").value = html;

Label1しかし、その背後にあるコードに移動すると、空であると表示されるため、機能していないようです。これは可能ですか?

編集

私はそれを隠しフィールドに変更しようとしました同じ問題:

<script type="text/javascript">
                (function () {
                    var converter1 = Markdown.getSanitizingConverter();
                    var editor1 = new Markdown.Editor(converter1);
                    editor1.run();

                    var d = document.getElementById("wmd_input");
                    var html = converter1.makeHtml(d.value);
                    alert(html);

                    document.getElementById('<%= h1.ClientID %>').value = html;
                    var h = document.getElementById('<%= h1.ClientID %>');
                    alert(h.value);
                })();
            </script>

私が抱えている問題は、asp.netサーバー側のボタンがあり、クリックするとこれを実行しようとすることです。

Label1.Text = h1.Value;

これは、非表示フィールドからラベルに値を格納することですが、これは機能しません。ブレークポイントを入れるh1と空になります....テキストエリアに変更を加えたときにサーバー側でこれらの変更を確認できるように、""どのイベントまたはこれを行う方法がわかりません。wmd_inputコード...

これが私のasp.netフォーム全体です:

<html>
    <head>
        <title>PageDown Demo Page</title>
        <link rel="stylesheet" type="text/css" href="css/demo.css" />
        <script type="text/javascript" src="js/Markdown.Converter.js"></script>
        <script type="text/javascript" src="js/Markdown.Sanitizer.js"></script>
        <script type="text/javascript" src="js/Markdown.Editor.js"></script>
    </head>
    <body>
        <form id="myForm" runat="server">
            <div class="wmd-panel">
                <div id="wmd-button-bar"></div>
                <textarea cols="5" rows="5" id="wmd_input" class="wmd-input" runat="server"></textarea>
                <div id="wmd_preview" class="wmd-panel wmd-preview" runat="server"></div>
            </div>
            <asp:button id="Button1" runat="server" Text="Set" onclick="Button1_Click"></asp:button>
            <asp:button id="Button2" runat="server" Text="Get" onclick="Button2_Click"></asp:button><asp:label id="Label1" runat="server">Label</asp:label>
            <asp:HiddenField ID="h1" runat="server" EnableViewState="true" />
            <script type="text/javascript">
                (function () {
                    var converter1 = Markdown.getSanitizingConverter();
                    var editor1 = new Markdown.Editor(converter1);
                    editor1.run();

                    var d = document.getElementById("wmd_input");
                    var html = converter1.makeHtml(d.value);
                    alert(html);

                    document.getElementById('<%= h1.ClientID %>').value = html;
                    alert(document.getElementById('<%= h1.ClientID %>').value);
                })();
            </script>
        </form>
    </body>
</html>
4

3 に答える 3

1

ラベルは投稿しません。inputまたはtextarea要素( )を使用する必要があります<asp:TextBox>。ユーザーにマークアップソースを表示させたくない場合は、を使用することもできます<asp:HiddenField>

于 2012-11-05T17:55:07.240 に答える
1

タグはasp:Label入力コントロールではないため、サーバーにポストバックされません。asp:HiddenFieldまたはasp:TextBox代わりに使用することをお勧めします。(そして、アディルのポイントも重要です。クライアントIDが実際にあなたが思っているものであることを確認する必要があります。)


これが私のために働くテストです。最初のページの読み込み時に、ラベルには「初期値」と表示されますが、アラートには「更新済み」と表示されます。ポストバック後、ラベルには「更新済み」も表示されます。

編集クライアント側のイベントハンドラー内にクライアント側の更新ロジックを追加しました。

<%@ Page Title="Test" Language="C#" AutoEventWireup="true" %>

<script runat="server">
    void Page_Load()
    {
        l1.Text = h1.Value;
    }
</script>

<html>
<body>
    <form runat="server">
        <asp:HiddenField runat="server" Value="initial value" ID="h1" />
        <asp:Label runat="server" ID="l1" />
        <asp:Button runat="server" Text="do postback" />
    </form>

    <script>
        document.getElementById('<%= Button1.ClientID %>').onclick = function () {
            document.getElementById('<%= h1.ClientID %>').value = 'updated';
            alert(document.getElementById('<%= h1.ClientID %>').value);
        };
    </script>
</body>
</html>
于 2012-11-05T17:55:50.023 に答える
0

ノックアウトjshttp://knockoutjs.com/examples/helloWorld.htmlを使用して、やりたいことができるはずです 。要素バインディングを使用できます。

于 2012-11-05T18:05:12.603 に答える