我目前正在将我们的业务网站从ASP.NET WebForms转换为ASP.NET MVC3。我正在尝试为我的用户添加一个状态指示器,就像我们使用WebForms一样。在WebForms中,我们使用了一个名为NameControl.js
的文件(从Microsoft获得),并使用该站点的代码:
<ItemTemplate>
<span class="presence">
<asp:Image Style="" ID="PresenceImage" runat="server" ImageUrl="~/Common/Images/Shady/Presence/presence_16-unknown.gif" />
</span>
</ItemTemplate>
背后的代码:
private void SetPresence(GridViewRow row, int PRESENCE_COL, string sip)
{
Image presenceImage = row.FindControl("PresenceImage") as Image;
if (string.IsNullOrEmpty(sip))
presenceImage.Visible = false;
else
{
presenceImage.Attributes.Add("onload", "PresenceControl('" + sip + "');");
}
}
而且,这工作正常。所以,回到最初的问题。目前我正在使用WebGrid列出我的用户,这是我视图中的存在代码(在WebGrid中):
grid.Column("Sip", header: "", format: @<text><span class="presence"><img id="@item.ObjectGuid" src="@Url.Content("~/Content/Images/Shady/Presence/presence_16-unknown.gif")" onload="PresenceControl("@item.Sip")" alt="" /></span></text>),
目前发生的事情很简单,没什么。转义引号什么也没做,只留下它们。当我尝试使用'@item.Sip'
代替"@item.Sip"
时,我收到错误消息:
Microsoft JScript运行时错误:'PresenceControl'未定义
我不知道该怎么办。有没有人有任何想法?
好的,我发现了问题。从Microsoft发送的Javascript语法错误导致javascript中断并且无法正确加载。我在IE9()中使用Web工具观察控制台输出时偶然发现了它。无论如何,它现在已经修好了!