初めてMVC3アプリケーションを作成していて、解決できないバグがありました。クライアント側の検証は機能していないようです。私は取得し続けます:1つまたは複数のエンティティの検証が失敗しました。詳細は、「EntityValidationErrors」プロパティを参照してください。
私はこの問題について多くの研究を行い、同様の問題を抱えている多くの人々が解決策を働かせることがわかりました。MVC3 - サービスとリポジトリレイヤの実装後にクライアント側の検証が機能しない
私のWeb設定ファイルが含まれています:
<appSettings>
<add key="webpages:Version" value="1.0.0.0" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="RouteDebugger:Enabled" value="false" />
</appSettings>
私は私のモデルクラスのすべてに設定データの注釈を持っている:
:using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace Mike_Cottingham_Industries.Models
{
public class Part
{
public Int32 PartID { get; set; }
[Display(Name="Manufacturer Part Number")]
[Required(ErrorMessage="Manufacturer Part Number is required")]
[MaxLength(50, ErrorMessage="Manufacturer Part Number cannot exceed 50 characters")]
public String ManufacturerPartNumber { get; set; }
[Display(Name="Supplier Part Number")]
[Required(ErrorMessage="Supplier Part Number is required")]
[MaxLength(50, ErrorMessage="Supplier Part Number cannot exceed 50 characters")]
public String SupplierPartNumber { get; set; }
[Required(ErrorMessage="Description is required")]
[MaxLength(250, ErrorMessage="Description cannot exceed 250 characters")]
public String Description { get; set; }
public virtual ICollection<Product> Products { get; set; }
public virtual ICollection<PartOrder> PartOrders { get; set; }
}
}
は、私は私の意見にロードされたデータの検証スクリプトを持っています
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
私が考えることができることは、それを台無しにしている可能性があります私は試した方法ですoジェネリック・ビューを作成する。
私はジェネリックを作成したビューを「作成」:
<h2>Add</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm((string)@ViewBag.Action, (string)@ViewBag.ControllerName, FormMethod.Post, new { @class="niceform"})) {
<fieldset class="edit_item">
@Html.Partial("_Edit");
</fieldset>
}
<div>
<a href="@Url.Action("Index", (string)@ViewBag.ControllerName)" class="bt_green"><span class="bt_green_lft"></span><strong>Back to List</strong><span class="bt_green_r"></span></a>
<a href="#" class="bt_blue" onclick="$('.niceform').submit(); return false;"><span class="bt_blue_lft"></span><strong>Save</strong><span class="bt_blue_r"></span></a>
</div>
そして汎用ビューによってロードされることを部分的:
@model Mike_Cottingham_Industries.Models.Part
@{
ViewBag.Controller = "Part";
ViewBag.Title = "Part";
}
@if (ViewBag.IsEdit == true)
{
@Html.HiddenFor(model => model.PartID)
}
@Html.ValidationSummary(true)
<dl>
<dt>@Html.LabelFor(model => model.ManufacturerPartNumber, "Manufacturer Part Number")</dt>
<dd>@Html.EditorFor(model => model.ManufacturerPartNumber)
@Html.ValidationMessageFor(model => model.ManufacturerPartNumber)</dd>
</dl>
<dl>
<dt>@Html.LabelFor(model => model.SupplierPartNumber)</dt>
<dd>@Html.EditorFor(model => model.SupplierPartNumber)
@Html.ValidationMessageFor(model => model.SupplierPartNumber)</dd>
</dl>
<dl>
<dt>@Html.LabelFor(model => model.Description)</dt>
<dd>@Html.EditorFor(model => model.Description)
@Html.ValidationMessageFor(model => model.Description)</dd>
</dl>
誰もが私は何をするなどの任意の考えを持っています間違っている?私の 'ジェネリック'を使用していないビューは正常に動作しているようです。
乾杯!