如何在asp.net mvc和实体框架下对文本框进行验证
本文关键字:文本 验证 框架 实体 asp net mvc | 更新日期: 2023-09-27 18:14:18
我正在使用c#和SQL Server 2005开发一个asp.net MVC 3应用程序。
我也使用实体框架和代码第一方法。
我有一些文本框,我希望他们只接受NUMBERS (Int).
我试图用javascript做,但我失败了,因为它们是在一个类的形式编辑器。
的例子:
<div><%:Html.Label("Nombre de Passage :")%><%: Html.EditorFor(model=>model.Nbr_Passage)%></div>
所以,我发现在一些教程中我必须使用数据注释
我试着在模型中这样做:
[Range(1, 100,
ErrorMessage = "Price must be between 1 and 100")]
public int Nbr_Passage { get; set; }
但是当我按下提交按钮时,这个错误总是出现:
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details
我做了一些研究,我发现我必须使用try catch。但我不知道在哪里和如何使用它。
这是控制器的代码(提交时的函数):
public ActionResult Save(FlowViewModel model)
{
if (ModelState.IsValid)
{
Gamme G = new Gamme();
G.ID_Gamme = model.SelectedProfile_Ga;
G.ID_Poste = model.SelectedPoste;
G.Last_Posts = model.PostePrecedentSelected;
G.Next_Posts = model.PosteSuivantSelected;
G.Nbr_Passage = int.Parse(model.Nbr_Passage);
G.Position = int.Parse(model.Position);
ListG.Add(G);
db.Gammes.Add(G);
db.SaveChanges();
}
return RedirectToAction("Index");
}
更新:这是javascript代码对按钮的影响,将打开视图:
<input type="button" value="Configurer" id="btnShowGestion" /></div>
<div id="divGestion"><%: Html.Partial("Gestion", Model) %></div>
<% } %>
<script type="text/javascript">
$(document).ready(function () {
$('#btnShowGestion').click(function () { $('#divGestion').slideToggle("slow") });
});
</script>
<fieldset>
首先,看起来你的FlowViewModel使用Nbr_Passage
的string
,否则我不理解int.Parse
。整型也可以。
第二,我没有看到任何Html.ValidationMessageFor
调用来向您的字段添加验证器,您也没有提到任何调用Html.ValidationSummary
来呈现整个表单的摘要。
首先,您需要添加两个.js文件,名为jquery.validate.min.js和jquery.validate.unobtrusive.min.js,它们已经包含在MVC 3的测试项目中。
然后你需要添加Html。关于表单开始的ValidationSummary。然后你可以使用Html。每个控件的ValidationMessageFor。
使用Html的例子。ValidationMessageFor
<div class="editor-label">
<%: Html.LabelFor(m => m.Password) %>
</div>
<div class="editor-field">
<%: Html.PasswordFor(m => m.Password) %>
<%: Html.ValidationMessageFor(m => m.Password) %>
</div>
在Model中指定Required属性并定义错误语句。
希望有帮助