[英]how to get selected values from javascript jquery in asp to use it in the code behind of C#
[英]How to transfer a serialized JSON string from C# code behind to use in Javascript
这里的最终目标是从C#代码后面的对象填充Bootstrap模态的字段,该对象包含我需要的所有数据。 我从后面的代码序列化了对象,如下所示:
JavaScriptSerializer serializer = new JavaScriptSerializer();
sJSON = serializer.Serialize(aerationsystem.AerationSystem);
现在,我想在我的Javascript函数中引用该JSON,如下所示:
</form>
<script type="text/javascript">
function fillModal() {
var diameterValue = document.getElementById('diameter');
var aeration = <%# sJSON %>;
diameterValue.innerText = aeration.dBinDiameter;
}
</script>
</asp:Content>
(我包括了结束表单标记和结束asp:Content标记,因此大家都可以看到我在文件的最后放置了Javascript的位置。)
但是,当我调用该Javascript函数时,这是在浏览器的调试器中看到的内容:
<script type="text/javascript">
function fillModal() {
var diameterValue = document.getElementById('diameter');
var aeration = ;
diameterValue.innerText = aeration.dBinDiameter;
}
</script>
我从这里得到的想法是: 任何将c#代码后面的对象传递给javascript的方法? 但是,访问该JSON变量的方法对我不起作用。 我曾尝试移动脚本,但是这样做时,出现一个错误,提示“无法修改控件集合,因为控件包含代码块(即<%...%>)。” 而且我尝试了其他定界符,例如<%=%>,但是根据脚本的放置位置,我也会遇到相同的错误。 我究竟做错了什么? 如何获取该JSON字符串以显示在Javascript函数中?
<%# %>
是一个绑定块,因此无论在Page_Load
还是Page_PreRender
事件中,都需要调用Page.DataBind()
方法。
您还需要整理字符串,以便JSON
文本不会破坏您的JavaScript:
var aeration = '<%# sJSON.Replace("'", "\'").Replace("\n", " ") %>';
<%# %>
语法用于绑定来自数据源的数据。
最简单的方法是使用文字服务器控件。 脚本标记内部似乎有点怪异,但却可以完成任务。
<script type="text/javascript">
function fillModal() {
var diameterValue = document.getElementById('diameter');
var aeration = <asp:Literal id="JsonLiteral" runat="server"/>;
diameterValue.innerText = aeration.dBinDiameter;
}
</script>
JavaScriptSerializer serializer = new JavaScriptSerializer();
JsonLiteral.Text = serializer.Serialize(aerationsystem.AerationSystem);
非常感谢您抽出宝贵的时间回答我的问题! 我终于从大家那里得到一些启发,终于解决了这个问题。 我最终没有使用Literal
控件,而是在页面上使用了<asp:HiddenField>
控件来存储值。 然后,我将其值提取到Javascript变量中。
隐藏的字段: <asp:HiddenField ID="JsonLiteral" runat="server" />
分配值的事件中的代码:
JavaScriptSerializer serializer = new JavaScriptSerializer();
JsonLiteral.Value = serializer.Serialize(aerationsystem.AerationSystem);
完成工作的JavaScript:
function fillModal()
{
$(document).ready(function () {
var diameter = document.getElementById('diameter');
var control = document.getElementById('<%= JsonLiteral.ClientID%>');
var aeration = JSON.parse(control.value);
diameter.innerText = aeration.dBinDiameter;
});
}
(当然,不仅仅可以拥有一个物业,而且还有很多其他功能。)
再次感谢大家的帮助,因为没有你我做不到!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.