我想将JS函数的值发送给HTML Helper。
换句话说,单击按钮时触发此帮助程序。
function ButtonClick(x) {
@Html.loadSubMenu(4);
}
<a class="Tab" href=@item.NavigateUrl>
<img src="~/Content/images/b1.png" id="b1"
onclick="return ButtonClick(1); bb1();" onmouseover="
bigImg(this)" onmouseout=" normalImg(this)"> </a>
答案 0 :(得分:2)
简答:你无法做你想做的事。
更长的回答:
asp,mvc和razor代码都在服务器上运行。在服务器上运行之后,它将变成HTML流,然后传递给客户端。
此时,服务器端代码不再运行。它已不再可用。浏览器对此一无所知。
您唯一能做的就是运行一些用JavaScript编写的客户端端代码。
当我查看您的代码并尝试猜测其意图时,我相信您正在尝试在用户点击导航按钮时提供一组额外的按钮。
一种可能的替代方法是继续使用剃刀创建按钮,但将它们包装成如下:
// Example code -- Not meant for actual production
<div style="display:none" id="extra-nav">
@Html.loadSubMenu(4);
</div>
<img src="~/Content/images/b1.png" id="b1"
onclick="handleNavClick" onmouseover="
bigImg(this)" onmouseout=" normalImg(this)"> </a>
<script>
function handleNavClick() {
document.getElementById("extra-nav").style.display = "block";
}
</script>
答案 1 :(得分:2)
Html Helper是一段C#代码,它将在服务器上运行并在页面内呈现html。在HTML页面内部发生的事件永远无法在服务器上运行C#代码。
但等等,......
您可以随时在ActionResult上发出ajax请求。
所以你可以在JS中调用这样的函数来加载来自服务器的子菜单。
function Test(){
//call the code here that will fetch html form server.
}