0

我正在尝试根据 jquery 的 hasClass 输出将整数参数传递给 Url.Action。如下所示,但语法无效。

<li class="myClass">
    <a href="@Url.Action("SetActionMode", "Home",  new { enable = $(this).find('i').hasClass("fa-check") ? 0 : 1 })">
      <i class="fa fa-check"></i> Debug Mode
    </a>
</li>

上面的正确语法是什么,或者有什么简单的方法可以做到这一点?

4

3 回答 3

3

我会说你应该“中断”链接点击,构建 URL,然后转到这个 URL。

$(".myClass a").click(function(event) {
    event.preventDefault();
    var url = $(this).attr('href');
    // here you do whatever makes sense
    url = url + "?enable=" + ($(this).find('i').hasClass("fa-check") ? 0 : 1)
    window.location.href = url;

});
于 2015-06-19T12:24:48.103 回答
0

ASP.NET 需要来自 jQuery 的值,但是两者不会同时运行 - jQuery 在客户端运行,ASP.NET 在服务器端运行。因此,在服务器端,它编译并将其发送到客户端,然后,在客户端,它运行 jQuery 代码。是hasClassjQuery 代码,new { ...是 ASP.NET 代码,这就是语法不正确的原因。

于 2015-06-19T12:23:07.003 回答
0

你不能这样做,但是你有另一个选择,即给你的锚标签一个类,然后为此编写一个点击函数,之后使用location.href执行相同的操作:

<li class="myClass">
    <a href="javascript:void(0)" class="clickme">
      <i class="fa fa-check"></i> Debug Mode
    </a>
</li>

<script>
$('.clickme').on('click',function(){
location.href='/Home/SetActionMode?enable='+$(this).find('i').hasClass('fa-check')?0:1;
})
</script>

这肯定会做你需要的。

于 2015-06-19T12:23:29.913 回答