Javascript中的more Razor中使用的Razor变量

Javascript中的more Razor中使用的Razor变量,javascript,razor,Javascript,Razor,Im在多个项目中循环,并为每个项目设置如下所示的图像标签。每一个都有一个onmouseover和onmouseout事件。db同时存储mouseover和mouseout映像目录,以分号分隔。这部分功能正常 <img onmouseover="hover(this, @id);" onmouseout="unhover(this, @id);" src="@(tblIconTable.getSpecificIconFromId(id).icon.Split(';')[0])" />

Im在多个项目中循环,并为每个项目设置如下所示的图像标签。每一个都有一个onmouseover和onmouseout事件。db同时存储mouseover和mouseout映像目录,以分号分隔。这部分功能正常

<img onmouseover="hover(this, @id);" onmouseout="unhover(this, @id);" src="@(tblIconTable.getSpecificIconFromId(id).icon.Split(';')[0])" />

我在javascript中的more razor中使用的“Id”未被识别。有一个聪明的解决方法吗?

一种方法是将两个URL作为数据属性分配给每个img标记,然后在悬停/取消悬停函数中读取这些属性:

<img onmouseover='hover(this)' onmouseout='unhover(this)' data-img-hover='@(tblIconTable.getSpecificIconFromId(Id).icon.Split(';')[1])' data-img-unhover='@(tblIconTable.getSpecificIconFromId(Id).icon.Split(';')[0])' src='@(tblIconTable.getSpecificIconFromId(Id).icon.Split(';')[0])'>

function hover(element) {
    element.setAttribute('src', element.data('img-hover'));
}
function unhover(element) {
    element.setAttribute('src', element.data('img-unhover'));
}

您不能像这样将javascript变量Id传递给.net代码。当第一次调用hover或unhover时,这些razor变量已经使用.net代码运行时Id的任何值转换为字符串。James,我知道这个解决方案不起作用。我想找一份聪明的工作
<img onmouseover='hover(this)' onmouseout='unhover(this)' data-img-hover='@(tblIconTable.getSpecificIconFromId(Id).icon.Split(';')[1])' data-img-unhover='@(tblIconTable.getSpecificIconFromId(Id).icon.Split(';')[0])' src='@(tblIconTable.getSpecificIconFromId(Id).icon.Split(';')[0])'>

function hover(element) {
    element.setAttribute('src', element.data('img-hover'));
}
function unhover(element) {
    element.setAttribute('src', element.data('img-unhover'));
}