【发布时间】:2017-05-19 08:50:22
【问题描述】:
我有一个表格:
@using (Html.BeginForm()){
<dl class="dl-horizontal">
<dt>@Html.LabelFor(m => m.VerifiedBy)<dt>
<dd>@Html.TextBoxFor(m => m.VerifiedBy)</dd>
</dl>
<input type="submit" value="Verify" onclick="checkValueVerify();" />
}
如果用户在未输入验证者值的情况下单击验证按钮,JavaScript 函数 checkValueVerify 将发送警报,然后直接发送到 HttpPost 验证 ActionResult。
JavaScript:
function checkValueVerify() {
if (document.getElementById("verifiedBy").value== "") {
alert('Must enter name of verifier');
}
$.ajax({
url: '/GAC/Verify',
type: 'POST',
data: {'by': verifBy}
});
}
控制器:
[HttpPost]
public ActionResult Verify(GACVerifyViewModel viewModel,string by)
{
if(by==null)
{
//code
return View();
}
当我单步执行代码时,它会从 return View 到 Verify.cshtml 到 Layout.cshtml,这正是我所期望的。但是,在 Layout.cshtml 的末尾,它又回到了[HttpPost] Verify,此时我的参数为空。
所以流程是 HttpPost 验证 -> Verify.cshtml -> HttpPost 验证(控制器 -> 视图 -> 控制器。 为什么它会回到我在控制器中的 HttpPost ActionResult 验证而不是仅仅渲染视图?
【问题讨论】:
-
那么如果用户不输入值,是否要提交表单?
-
我有,但我只是在他们没有输入值的部分遇到问题。
标签: javascript c# asp.net-mvc asp.net-mvc-4 http-post