Window.Location.Href 或其他重定向 _self 的方法不起作用(MVC 视图)

Posted

技术标签:

【中文标题】Window.Location.Href 或其他重定向 _self 的方法不起作用(MVC 视图)【英文标题】:Window.Location.Href or other methods of redirecting _self not working (MVC View) 【发布时间】:2013-06-28 22:36:18 【问题描述】:

我确信对此可能有一个非常简单的解释,但我尝试了几种方法都无济于事。

对 MVC 有点陌生,但我已经设置了一个带有条件搜索参数的控制器,现在只需要一种通过查询字符串传递参数的方法。

直接导航到:

Collectors/Index?searchName=Tom

效果很好,所以我在视图上设置了一个文本框来接受参数,并试图将用户重定向到 searchName= Input。

问题是由于某种原因 window.location.href 函数根本没有重定向页面。我已经尝试将目标设置为 _self 的 window.open 方法,但没有成功 - 但是使用目标 _new 或不指定总是有效。

这个函数不能在同一个窗口上工作有什么原因吗?

下面会产生一个警报,没有重定向,之后没有警报:

        $("#search").click(function () 
        alert("before");
        window.location.href("../Collector/Index?collectorName=Tom");
        alert("after");

但是这会产生警报和重定向(以及搜索结果)

  $("#search").click(function () 
        alert("before");
        window.open("../Collector/Index?collectorName=Tom");
        alert("after");
    );

我的控制器操作:

public ActionResult Index(string collectorName)
    

        var db = new CollectorsCRUDController();

        var query = db.GetEXCEL_Collectors();

        if (!String.IsNullOrEmpty(collectorName))
        
            query = query.Where(c => c.CollectorName.Contains(collectorName));

        


        return View(query);

    

任何提示都会很棒!谢谢!

已解决


对于其他对此有疑问的人:

我的问题是我使用了错误的语法来调用 window.location 方法...

window.location = URL 

不是

window.location(URL); 

对我有用的完整代码

    $("#search").click(function () 
        var query = $("#searchName").val();
        window.location = "/Collector/Index?collectorName=" + query;
    );

【问题讨论】:

【参考方案1】:

已编辑:

window.location / window.location.href 和其他变体需要使用 = 运算符进行设置,而不是像使用 window.open() 那样使用括号 (())。

更改:window.location.href("../Collector/Index?collectorName=Tom");

收件人:window.location.href="../Collector/Index?collectorName=Tom";

【讨论】:

感谢您的快速回复,我已经尝试了几乎所有重定向到 _self ... window.location, window.location.href, window.open(.._self), self .location 等 试试:document.location.href='/page.htm'; .. 抓着稻草,对不起:( 试过了......不幸的是它没有工作。我也刚刚放弃尝试让它重定向到正确的页面,以防万一这可能是一个问题......目前 document.location.href("google.com") 也没有做任何事情(我仍然之前得到警报) 顺便说一句,我相信你应该使用 = 代替 location / location.href,而不是括号 (())。你试过吗:window.location='page.htm'; 非常感谢!!!我从没想过这么多挫折会归结为等号而不是参数。你太棒了阿尔菲

以上是关于Window.Location.Href 或其他重定向 _self 的方法不起作用(MVC 视图)的主要内容,如果未能解决你的问题,请参考以下文章

Javascript window.location.href - 刷新页面而不是重定向

window.open 目标_self v window.location.href?

window.open 目标_self v window.location.href?

在 window.location.href 重定向后处理 Web API 回调的响应

javascript进行重定向页面时用window.href.location为啥有时不传参数?

关闭警报框后如何重定向页面?