我目前正在将我们的业务站点从 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'
instead of 时"@item.Sip"
,我收到一条错误消息:
Microsoft JScript 运行时错误:“PresenceControl”未定义
我不知道该怎么做。有没有人有任何想法?
好的,我发现了问题。Microsoft 提供的 Javascript 存在语法错误,导致 javascript 中断并且无法正确加载。我使用 IE9 () 中的网络工具观察控制台输出时偶然发现了它。不管怎样,现在已经修好了!