我正在使用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
答案 0 :(得分:1)
标签不发布。您必须使用input
或textarea
元素(<asp:TextBox>
)。如果您不希望用户看到标记源,您还可以使用<asp:HiddenField>
。
答案 1 :(得分:1)
asp:Label
标记不是输入控件,因此不会将其发回服务器。我建议改用asp:HiddenField
或asp: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你可以使用元素绑定。