如何在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>

如何在asp.net mvc和实体框架下对文本框进行验证

首先,看起来你的FlowViewModel使用Nbr_Passagestring,否则我不理解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属性并定义错误语句。

希望有帮助