我正在尝试根据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>
上面的正确语法是什么,或者有一些简单的方法可以做到这一点吗?
答案 0 :(得分: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;
});
答案 1 :(得分:0)
ASP.NET需要来自jQuery的值,但是两者不能同时运行 - jQuery在客户端运行,ASP.NET在服务器端运行。因此,在服务器端,它编译并将其发送到客户端,然后,在客户端,它运行jQuery代码。 hasClass
是jQuery代码,new { ...
是ASP.NET代码,这就是为什么它的语法不正确。
答案 2 :(得分: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>
这肯定会做你需要的。