Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC DropDownList导致了我不希望出现的回发—似乎源于JavaScript_C#_Javascript_Jquery_Asp.net_Asp.net Mvc - Fatal编程技术网

C# ASP.NET MVC DropDownList导致了我不希望出现的回发—似乎源于JavaScript

C# ASP.NET MVC DropDownList导致了我不希望出现的回发—似乎源于JavaScript,c#,javascript,jquery,asp.net,asp.net-mvc,C#,Javascript,Jquery,Asp.net,Asp.net Mvc,我在MVC项目中有一个标准表单,其中有一个DropDownList。当我更改dropdownlist的值时,整个页面会重新加载,因为它会导致回发 我不希望出现这种行为,我正试图阻止dropdownlist进行回发 然而,这就是它变得奇怪的地方。我用以下方式定义我的dropdownlist: @Html.DropDownList("sortOrder", null, new { onchange = "startUpdate(this)" }) 忽略Javascipt,没有什么能指望我回发邮件。

我在MVC项目中有一个标准表单,其中有一个DropDownList。当我更改dropdownlist的值时,整个页面会重新加载,因为它会导致回发

我不希望出现这种行为,我正试图阻止dropdownlist进行回发

然而,这就是它变得奇怪的地方。我用以下方式定义我的dropdownlist:

@Html.DropDownList("sortOrder", null, new { onchange = "startUpdate(this)" })
忽略Javascipt,没有什么能指望我回发邮件。如果我们将整个表格包括在内,我们可以在这里看到同样的情况:

 @using (var form = Html.BeginForm("Query", "Search", FormMethod.Get, new { id="queryform", name="queryform", onsubmit = "startUpdate(this); return false;"}))
                    {

                                <b>Sorter efter</b><br />
                                @Html.DropDownList("sortOrder", null, new { onchange = "startUpdate(this)" })<br />
                            </div>
                            <br />
                        <input type="submit" class="button_green" value="Søg igen &#x25BA;" id="SearchButton" name="SearchButton" style="float: left;" onclick="_gaq.push(['_trackEvent', 'Ads_listing', 'search_again_click']); startUpdate(this); return false;" />
                        <input type="reset" class="button_small" value="Nulstil" id="ClearButton" style="float: right;" />
                        </text>
                    }
我迷路了。我已经搜索了几个小时了,但我找不到导致回发的愚蠢的JS。有什么想法吗?这将是一个巨大的帮助

编辑:

代码中引用了启动日期。我试图删除它,但仍然得到了回复。下面是代码:

 function startUpdate(sender) {
            if (tmr != null) clearTimeout(tmr);
            tmr = setTimeout("updateSearch()", 700);
        }

        function updateSearch() {
            tmr = null;
            searchParams.transactiontype = $("input[name=transactionType]:checked").val();
            searchParams.text = $("input[name=text]").val();
            var sct = "";
            $("input[name=sectors]:checked").each(function() { sct += $(this).val() + ","; });
            searchParams.sector = sct;
            searchParams.allsectorsrequired = $("#allSectorsRequired").attr("checked") == "checked" ? "true" : "";
            var rgn = "";
            $("input[name=regions]:checked").each(function() { rgn += $(this).val() + ","; });
            searchParams.region = rgn;
            var orgn = "";
            $("input[name=operatingRegions]:checked").each(function() { orgn += $(this).val() + ","; });
            searchParams.operatingregion = orgn;
            searchParams.alloperatingregionsrequired = $("#allOperatingRegionsRequired").attr("checked") == "checked" ? "true" : "";
            searchParams.priceFrom = $("input[name=priceFrom]").val();
            searchParams.priceTo = $("input[name=priceTo]").val();
            searchParams.yearFrom = $("input[name=yearFrom]").val();
            searchParams.yearTo = $("input[name=yearTo]").val();
            searchParams.canMove = $("input[name=canMove]:checked").val();
            searchParams.financingavailable = $("input[name=financingAvailable]:checked").val();
            searchParams.orderby = $("select[name=sortOrder]").val();

            for (var key in searchParams) {
                if ((!psp || psp[key] != searchParams[key]) && searchParams[key]) {
                    _gaq.push(['_trackEvent', 'Vbørs Søg autoupdate', key, searchParams[key]]);
                }
            }
            psp = $.extend({}, searchParams);

            $("#searchResults").load("@Url.Action("SearchJSON", "Search")", searchParams, searchCallback);

            var tttxt = " til salg";
            if (searchParams.transactiontype != 2) tttxt = " købes";

            if (searchParams.text.length > 0) {
                $("#searchtitle").text(searchParams.text + tttxt);
                document.title = searchParams.text + tttxt;
            }
        }

根据我在评论中发布的内容,不知何故,您可能知道在代码中发生这种情况的地方您的onchange事件处理程序正在被更改,从startUpdatethis更改为top.location.href=sortLink.replace{sortOrder},this.value


因此,当select更改时,它将替换页面URL,这显然会导致GET刷新。

StartUpdatethis-它在哪里?onchange=StartUpdatethis正在调用javascript,但我没有在页面上的任何位置直接看到该方法,因此它必须存在于这些文件中/Assets/js/global.js?2.0或/user/infobox?635467592356980146Hey伙计们:我粘贴的代码是一个版本,在这个版本中,我试图删除所有JavaScript。删除该方法什么都没做,但我仍然得到了回发。您可以在以下链接中看到生产上的方法:打开浏览器控制台窗口,检查网络选项卡以查看调用的内容。@MelanciaUK它可以访问同一URL-但是,这就是问题所在-它不应该访问同一URL!如果GET是作为AJAX生成的,则可以,但不应重定向页面。您可以通过更改上的选择/选项来尝试自己;
 function startUpdate(sender) {
            if (tmr != null) clearTimeout(tmr);
            tmr = setTimeout("updateSearch()", 700);
        }

        function updateSearch() {
            tmr = null;
            searchParams.transactiontype = $("input[name=transactionType]:checked").val();
            searchParams.text = $("input[name=text]").val();
            var sct = "";
            $("input[name=sectors]:checked").each(function() { sct += $(this).val() + ","; });
            searchParams.sector = sct;
            searchParams.allsectorsrequired = $("#allSectorsRequired").attr("checked") == "checked" ? "true" : "";
            var rgn = "";
            $("input[name=regions]:checked").each(function() { rgn += $(this).val() + ","; });
            searchParams.region = rgn;
            var orgn = "";
            $("input[name=operatingRegions]:checked").each(function() { orgn += $(this).val() + ","; });
            searchParams.operatingregion = orgn;
            searchParams.alloperatingregionsrequired = $("#allOperatingRegionsRequired").attr("checked") == "checked" ? "true" : "";
            searchParams.priceFrom = $("input[name=priceFrom]").val();
            searchParams.priceTo = $("input[name=priceTo]").val();
            searchParams.yearFrom = $("input[name=yearFrom]").val();
            searchParams.yearTo = $("input[name=yearTo]").val();
            searchParams.canMove = $("input[name=canMove]:checked").val();
            searchParams.financingavailable = $("input[name=financingAvailable]:checked").val();
            searchParams.orderby = $("select[name=sortOrder]").val();

            for (var key in searchParams) {
                if ((!psp || psp[key] != searchParams[key]) && searchParams[key]) {
                    _gaq.push(['_trackEvent', 'Vbørs Søg autoupdate', key, searchParams[key]]);
                }
            }
            psp = $.extend({}, searchParams);

            $("#searchResults").load("@Url.Action("SearchJSON", "Search")", searchParams, searchCallback);

            var tttxt = " til salg";
            if (searchParams.transactiontype != 2) tttxt = " købes";

            if (searchParams.text.length > 0) {
                $("#searchtitle").text(searchParams.text + tttxt);
                document.title = searchParams.text + tttxt;
            }
        }