将convert html分配给服务器端控件

时间:2012-11-05 17:44:22

标签: javascript asp.net

我正在使用markdown并且我有一些输入,例如**test**,这使得单词测试以粗体测试显示,并且我已经将其转换为html,如此“< / p>

                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为空"" ....所以我不确定是什么事件或如何做到这一点,以便当我更改我的textarea {{1我应该能够在服务器端代码中看到这些变化...

这是我的整个asp.net表单:

wmd_input

3 个答案:

答案 0 :(得分:1)

标签不发布。您必须使用inputtextarea元素(<asp:TextBox>)。如果您不希望用户看到标记源,您还可以使用<asp:HiddenField>

答案 1 :(得分:1)

asp:Label标记不是输入控件,因此不会将其发回服务器。我建议改用asp:HiddenFieldasp:TextBox。 (Adil的观点也很重要,你需要确保客户端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>

答案 2 :(得分:0)

你应该能够通过使用knockoutjs来做你想做的事http://knockoutjs.com/examples/helloWorld.html你可以使用元素绑定。