以下のように、プロパティにいくつかの正規表現を持つモデルがあります。
ビューは動的ビューであり、以下のように jquery からコンテンツをロードしています。
更新: 問題は見つかりましたが、解決策は見つかりませんでした。[UIHint("TextBox")] を使用していくつかのカスタム クラスとスクリプトを追加しているため、正規表現のクライアント側属性はレンダリングされません。UIHInt を削除すると、すべての検証属性が問題なく生成されます。UIHint を追加すると、何も生成されません。
UIHint エディター テンプレートの何が問題なのかわかりません。アドバイスお願いします???
EditorTemplate/TextBox.cshtml
@Html.TextBoxFor(m => Model, new {@class="txt"})
私のモデル:
public partial class PartyRole
{
[UIHint("TextBox")]
[RegularExpression(@"^.{5,}$", ErrorMessage="Minimum 5 characters required")]
[StringLength(50, ErrorMessage="Maximum {2} characters exceeded")]
public string Title { get; set; }
}
jquery unobtrusive は私のバンドルに次のように含まれています。
bundles.Add(new ScriptBundle("~/js/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
意見:
@model dynamic
@using (Html.BeginForm("Edit", null, FormMethod.Post, new { id="FrmIndex" }))
{
@Html.ValidationSummary(true);
@Html.EditorForModel()
<input type="submit" value="Edit" />
}
<script>
$(".datetime").datetime();
$(".combo").combo();
$(".chk").chk();
var form = $("#FrmIndex")
.removeData("validator") /* added by the raw jquery.validate plugin */
.removeData("unobtrusiveValidation"); /* added by the jquery unobtrusive plugin */
$.validator.unobtrusive.parse(form);
</script>
ただし、検証はクライアント側で生成されません。メッセージはサーバー側から生成されています。
更新: いくつかのブレークスルーを取得しました。これらの検証は、強く型付けされたビューで正常に機能しています。ただし、現在ここに表示している動的ビューではありません。
誰かが私がここでやっていることが間違っているとアドバイスできますか?