浏览器未显式切换到视图

本文关键字:视图 浏览器 | 更新日期: 2023-09-27 18:16:03

我有一个相当奇怪的问题,我有一个按钮在我的索引链接到一些Javascript,然后调用我的IndicatorController StepTwo ActionResult,它在调试器中点击返回视图行后做以下操作:

  1. 点击_ViewStart

  2. 点击第二步的ViewBag。标题行

  3. 快速浏览_Layout

  4. 点击控制器中的Dispose功能

然而,浏览器本身没有被定向到指示器/step2,我怀疑这可能是因为step2视图的其余部分没有被击中,但我不确定为什么会这样。

StepTwo ActionMethod:

public ActionResult StepTwo(int wwStart, int wwEnd)
{
    if (!wwStart.Equals(null))
    {
        ViewBag.wwStartSelected = wwStart;
    }
    if (!wwEnd.Equals(null))
    {
        ViewBag.wwEndSelected = wwEnd;
    }
    return View("StepTwo");
}

StepTwo视图:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@{
    ViewBag.Title = "Create Indicator: Step 2 of 3";
}
<h2>Create Indicator: Step 2 of 3 - Select Work Week Range</h2>
<h3>Select Indicator Type</h3>
<button type="button" class="btn btn-primary">Manager Indicator</button>
<button type="button" class="btn btn-primary">Owner Indicator</button>

指数:

@model IEnumerable<YourProject.ViewModels.DropDownVM>

@{
    ViewBag.Title = "Create Indicator: Step One of Two";
}
<h2>Indicators</h2>

<h2>Create Indicator: Step One of Two - Select Work Week Range</h2>
<h3>Select Starting Work Week</h3>
@Html.DropDownList("WWStart", (SelectList)ViewBag.DDLWWStart.Categories, " -- Select Starting Work Week -- ")
<br /><br />
<h3>Select Ending Work Week</h3>
@Html.DropDownList("WWEnd", (SelectList)ViewBag.DDLWWEnd.Categories, " -- Select Ending Work Week -- ")
<br /><br />
@Html.AntiForgeryToken()
<button class="btn btn-default" id="checkbtn" onclick="nextStep();" type="button">Next Step</button>

<script type="text/javascript">
    function nextStep() {
        var wwStartElement = document.getElementById("WWStart");
        var wwStartValue = parseInt(wwStartElement.value);
        var wwEndElement = document.getElementById("WWEnd");
        var wwEndValue = parseInt(wwEndElement.value);
        if (wwStartValue > wwEndValue) {
            alert("You selected a starting Work Week that starts before the ending Work Week. Please select a starting Work Week that is equal to or happens before the ending Work Week.");
            return false;
        }
        alert("Right before issue?");
        //Submit data to IndictatorController/StepTwo ActionMethod
        $.ajax({
            url: '@Url.Action("StepTwo")',
            type: "POST",
            data: {
                'wwStart': wwStartValue,
                'wwEnd': wwEndValue
            },
            success: function (result) {
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert(thrownError);
            }
        });
    }
</script>

浏览器未显式切换到视图

我认为这里有一个根本性的误解。如果提交的是AJAX请求,则不会导致浏览器执行任何操作。来自AJAX请求的服务器响应将简单地传递给成功回调,然后由决定如何处理它(将某些内容插入DOM等)。然而,对于这种情况,您不会想要返回一个完整的视图,包含布局和所有内容。那你就知道了。相反,您会想要一些类似于部分视图的东西,这样您就可以在DOM的某个地方插入HTML。

如果所有你想做的是加载一个新的网页到浏览器选项卡/窗口,那么JavaScript甚至不应该发挥作用。只需做一个标准的表单post或者让按钮成为一个链接。