1

我正在使用 C# 和 SQL Server 2005 开发一个 ASP .Net MVC 3 应用程序。

我也在使用实体框架和代码优先方法。

我有一些文本框,我希望它们只接受NUMBERS (Int)。

我试图用 javascript 做到这一点,但我失败了,因为它们是类EDITOR FOR 的形式。

例子 :

<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>
4

2 回答 2

1

首先,您需要添加两个名为 jquery.validate.min.js 和 jquery.validate.unobtrusive.min.js 的 .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>

在模型中指定必需属性并定义错误语句。

希望有帮助

于 2013-05-20T10:01:13.657 回答
1

首先,看起来您的 FlowViewModel 使用了stringfor Nbr_Passage,否则我不明白int.Parse. int 应该可以正常工作。

其次,我没有看到任何Html.ValidationMessageFor将验证器添加到您的字段的调用,并且您没有提到任何调用来Html.ValidationSummary呈现整个表单的摘要。您可能想要添加(其中一个)。

于 2013-05-20T08:12:01.507 回答