我的javascript代码如下所示:
$('#lnkPopup').click(function()
{
var id = $(this).attr('rel');
var msgCount = '<%= Model.ElementAt('+id+').MailCount %>';
});
&lt;%= Model.ElementAt('+ id +')。MailCount%&gt;不起作用。
那么如何将javascript变量添加到服务器端查询呢?
答案 0 :(得分:2)
有两种方法可以回答这个问题。
1)简短的回答是,你无法完全按照自己的意思去做。
首先要理解的是服务器标签之间的代码&lt; %%&gt;只是服务器端代码。
标签......
<%=
...表示服务器将生成输出并将结果发送给客户端。
Javascript&amp; jQuery代码只是客户端代码。
所以你的javascript / jQuery无法直接与服务器端代码交互。但是,您可以从服务器端生成客户端代码。
2)我们如何从客户端代码获取值到服务器端?
有两种方法,这取决于您为Web应用程序选择的样式以及手头的问题。
答案 1 :(得分:2)
var mailCountTable = {};
<% foreach (var id in Model.Ids) { %>
elementTable['<%= id $>'] = '<%= Model.ElementAt(id).MailCount %>';
<% } %>
$('#lnkPopup').click(function()
{
var id = $(this).attr('rel');
var msgCount = mailCountTable[id];
});
或者,您可以使用$ .getJSON获取mailCountTable。或者,延迟加载:
function getMailCount(id) {
if (mailCountTable.length == 0)
$.ajax({async: false, url: '/mailcounttable', format: 'json',
success: function(data) { mailCountTable = data; } });
return mailCountTable[id];
}
答案 2 :(得分:0)
基本上,你没有。服务器代码将在服务器上执行,早在javascript客户端上执行javascript之前。
您必须将ajax调用回服务器,以便服务器端代码能够识别javascript值。
或者,您可以使用服务器端代码编写包含元素和邮件计数的javascript哈希表。然后,该函数可以在执行时查找该哈希表中的值。
有很多方法可以解决这个问题,要理解的关键概念是,当javascript正在执行时,您的服务器代码已经完成,因此您最好在页面上拥有所有数据,或者使用ajax回调服务器。 / p>