选中复选框以提交无法在Chrome中使用的链接

时间:2013-07-02 14:15:30

标签: asp.net-mvc-3 razor

我在剃刀视图(.NET MVC3)中有一个链接,它是一个排序功能的一部分,它显示所有记录(活动和已归档)或活动记录(页面加载时的默认值)。它在Firefox中运行良好。但它只有在我点击链接的文本部分时才有效,而不是在检查chrome和IE的复选框时。这是我用过的代码。

        <a id="lnkShowAll" href="@Url.Action("showAll", "myController", new { showOnlyActive = !Model.Active })" >
        <input id="chkShowAll" type="checkbox"  
                @if(!Model.Active){
                    @: checked="checked"
                } >
          Show All (<span class="activeFont">Active</span> / <span class="archivedFont">Archived</span> )
        </a>

这是控制器,但我怀疑问题出在控制器上,因为当选中复选框时没有调用它

public ActionResult Index(bool showOnlyActive = true)
    {
        RecordList recordList = searchForRecordList(showOnlyActive);
        return View("Index", recordList) ;
    }

有没有人知道我缺少什么?

1 个答案:

答案 0 :(得分:0)

我仍然不确定为什么它在Firefox中有效,但在Chrome和IE中却没有,但我找到了适用于所有人的解决方案。 我在jquery中为链接的click函数写了一个事件。

        $("#lnkShowAll").click(function(event)
        {
          var link = $(this);
          var target = link.attr("target");

          if($.trim(target).length > 0)
          {
            window.open(link.attr("href"), target);
          }
          else
          {
             window.location = link.attr("href");
          }

          event.preventDefault();
        });

并添加了一个点击功能,以便在选中/取消选中复选框时触发链接的点击事件。

$("#chkShowAll").click(function(){
            $("#lnkShowAll").click();
});

这确保无论您使用何种浏览器,只要点击该复选框,都会点击该链接。