MVC 4.x 验证下拉菜单并重定向到下一页
MVC 4.x Validate dropdown and redirect to next page
初学者问题:
我有一个 MVC 应用程序,其中一个页面上有三个下拉菜单。目前,我正在使用 AJAX 评估表单提交的下拉菜单,并修改 CSS class 以在问题答案错误时显示反馈。
HTML:
<form method="post" id="formQuestion">
<div class="container-fluid">
<div class="row">
<div class="col-md-4">
<p>This is a question:</p>
</div>
<div class="col-md-4">
<select id="Question1">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</div>
<div class="col-md-4 answerResult1">
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<button class="btn btn-success" type="submit" id="btnsubmit">Submit Answer</button>
</div>
</div>
</form>
AJAX:
@section scripts {
<script>
$(document).ready(function () {
$("#formQuestion").submit(function (e) {
e.preventDefault();
console.log($('#Question1').val())
$.ajax({
url: "/Home/DSQ1",
type: "POST",
data: { "selectedAnswer1": $('#Question1').val() },
success: function (data) { $(".answerResult1").html(data); }
});
})
});
</script>
}
控制器:
public string DSQ1(string selectedAnswer1)
{
var message = (selectedAnswer1 == "3") ? "Correct" : "Feed back";
return message;
}
我有三个这样的下拉菜单,AJAX 都以相同的方式对其进行了评估。我的问题是,如果这三个都正确,我将如何评估所有三个然后返回一个特定的视图。
我想避免使用硬类型的 http:// 地址。
您可以在文档就绪函数之前声明一个全局脚本变量,这将确定字段是否有效。参见 var dropdown1Valid = false, ...
。
然后在 ajax 成功函数中,您可以修改那里的值。在下面的 ajax 中说,你对第一个下拉菜单的回答,如果你的控制器返回正确,请将 dropdown1Valid
设置为 true
。
最后,在提交函数的末尾,您可以重定向检查所有变量是否为真,然后使用 window.location.href="URL HERE
或使用 html 助手 url.action [=15] 重定向=]
@section scripts {
<script>
var dropdown1Valid = false;
var dropdown2Valid = false;
var dropdown3Valid = false;
$(document).ready(function () {
$("#formQuestion").submit(function (e) {
e.preventDefault();
console.log($('#Question1').val())
$.ajax({
url: "/Home/DSQ1",
type: "POST",
data: { "selectedAnswer1": $('#Question1').val() },
success: function (data) {
$(".answerResult1").html(data);
if(data == "Correct"){
// if correct, set dropdown1 valid to true
dropdown1Valid = true;
}
// option 1, put redirect validation here
if(dropdown1Valid && dropdown2Valid && dropdown3Valid){
// if all three are valid, redirect
window.location.href="@Url.Action("actionName","controllerName", new { })";
}
}
});
// option 2, put redirect validation here
if(dropdown1Valid && dropdown2Valid && dropdown3Valid){
// if all three are valid, redirect
window.location.href="@Url.Action("actionName", "controllerName", new { })";
}
})
});
</script>
}
初学者问题:
我有一个 MVC 应用程序,其中一个页面上有三个下拉菜单。目前,我正在使用 AJAX 评估表单提交的下拉菜单,并修改 CSS class 以在问题答案错误时显示反馈。
HTML:
<form method="post" id="formQuestion">
<div class="container-fluid">
<div class="row">
<div class="col-md-4">
<p>This is a question:</p>
</div>
<div class="col-md-4">
<select id="Question1">
<option value=""></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</div>
<div class="col-md-4 answerResult1">
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<button class="btn btn-success" type="submit" id="btnsubmit">Submit Answer</button>
</div>
</div>
</form>
AJAX:
@section scripts {
<script>
$(document).ready(function () {
$("#formQuestion").submit(function (e) {
e.preventDefault();
console.log($('#Question1').val())
$.ajax({
url: "/Home/DSQ1",
type: "POST",
data: { "selectedAnswer1": $('#Question1').val() },
success: function (data) { $(".answerResult1").html(data); }
});
})
});
</script>
}
控制器:
public string DSQ1(string selectedAnswer1)
{
var message = (selectedAnswer1 == "3") ? "Correct" : "Feed back";
return message;
}
我有三个这样的下拉菜单,AJAX 都以相同的方式对其进行了评估。我的问题是,如果这三个都正确,我将如何评估所有三个然后返回一个特定的视图。
我想避免使用硬类型的 http:// 地址。
您可以在文档就绪函数之前声明一个全局脚本变量,这将确定字段是否有效。参见 var dropdown1Valid = false, ...
。
然后在 ajax 成功函数中,您可以修改那里的值。在下面的 ajax 中说,你对第一个下拉菜单的回答,如果你的控制器返回正确,请将 dropdown1Valid
设置为 true
。
最后,在提交函数的末尾,您可以重定向检查所有变量是否为真,然后使用 window.location.href="URL HERE
或使用 html 助手 url.action [=15] 重定向=]
@section scripts {
<script>
var dropdown1Valid = false;
var dropdown2Valid = false;
var dropdown3Valid = false;
$(document).ready(function () {
$("#formQuestion").submit(function (e) {
e.preventDefault();
console.log($('#Question1').val())
$.ajax({
url: "/Home/DSQ1",
type: "POST",
data: { "selectedAnswer1": $('#Question1').val() },
success: function (data) {
$(".answerResult1").html(data);
if(data == "Correct"){
// if correct, set dropdown1 valid to true
dropdown1Valid = true;
}
// option 1, put redirect validation here
if(dropdown1Valid && dropdown2Valid && dropdown3Valid){
// if all three are valid, redirect
window.location.href="@Url.Action("actionName","controllerName", new { })";
}
}
});
// option 2, put redirect validation here
if(dropdown1Valid && dropdown2Valid && dropdown3Valid){
// if all three are valid, redirect
window.location.href="@Url.Action("actionName", "controllerName", new { })";
}
})
});
</script>
}