使用Javascript单击按钮时如何触发HTML帮助程序

时间:2014-08-07 05:42:06

标签: c# javascript asp.net-mvc razor html-helper

我想将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> 

2 个答案:

答案 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.
}