浏览器未显式切换到视图
本文关键字:视图 浏览器 | 更新日期: 2023-09-27 18:16:03
我有一个相当奇怪的问题,我有一个按钮在我的索引链接到一些Javascript,然后调用我的IndicatorController StepTwo ActionResult,它在调试器中点击返回视图行后做以下操作:
-
点击_ViewStart
-
点击第二步的ViewBag。标题行
-
快速浏览_Layout
-
点击控制器中的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或者让按钮成为一个链接。