我有一个带有客户端验证的mvc表单。
如果javascript被禁用,我想确保用户无法提交页面,因为这样会绕过验证。 这有可能,怎么办呢?
提前致谢!
答案 0 :(得分:1)
虽然可能,但这不是解决问题的好方法。客户端验证不能替代服务器端检查。您必须进行服务器端检查,因为没有人强迫用户使用您的前端。他们可以建立自己的网页,将数据提交给您的应用程序。
答案 1 :(得分:1)
编辑:与sitnarf相似
默认设置不显示:
<input type="submit" id="submitButton" value="Submit" style="display:none;"/>
注意display: none;
然后在javascript中你可以这样做:
document.getElementById("submitButton").style.display = 'inline-block';
使其再次可见(inline-block
是提交按钮的正常显示类型)。
请记住将javascript代码放在您身体的底部,或者将其包含在类似于document.onload
的函数中,以确保它不会获取该元素直到页面已加载
答案 2 :(得分:0)
你总是可以使用Javascript来提交表单,使用一个名为Submit的按钮,它不是一个提交按钮!
HTML
<input type="button" name="Submit" value="Submit" onclick="SubmitForm()">
JS
function SubmitForm()
{
document.getElementById("myForm").submit();
}
禁用javascript后,点击该按钮将无法执行任何操作。
答案 3 :(得分:0)
默认状态必须是,该表单无法提交(不使用操作属性),例如
<div class='error'>Turn your javascript to active form</div>
<form>
...
Field: <input type="text" name="name">
<input type="submit" style="display: none">
</form>
使用javascript,追加标签以隐藏消息并显示提交按钮:
<script>
$(".error").hide();
$("submit").show();
$("form").attr("action", "someurl.php");
</script>
答案 4 :(得分:0)
在asp.net mvc中还有一个很好的功能ModelState.IsValid
来检查模型验证是否满足你可以使用它,如果某种方式在浏览器中禁用javascript或以某种方式绕过客户端验证..
public ActionResult Index()
{
if( ModelState.IsValid )
{}
else
{}
}
总是尝试在asp.net mvc中使用ModelState.IsValid
,因为客户端验证永远不可靠,也没有完整的证明方式来检查javascript是启用还是禁用...使用{{的优势1}}如果是启用还是禁用了javascript,您的表单将会提交,并且还将在控制器端检查模型的所有验证。