durandal テンプレート + 風を使用して asp.net mvc プロジェクトに取り組んでいます。
ビューに追加/編集操作用の検証ロジックを定義したいと考えています。
これまでのところ、データベースから入力されたテキスト、ドロップダウンで機能します。要素にデータが含まれていない場合、要素はノックアウト検証のおかげで赤でマークされます。
ただし、単純なリストから入力されたドロップダウンでは機能しません。
リストに入力する要素は、列挙型から取得されます。
public class Transport
{
[Key]
int id { get; set; }
...
[Required]
public EnumCategory Category { get; set; }
}
public enum EnumCategory
{
Cat1,
Cat2,
Cat3
}
最初の問題:モデル (サーバー側) から列挙型を取得してクライアント側で使用できるかどうかわかりません。とりあえず、ドロップダウンにデータを入力するための配列クライアント側を作成しました。
var categories = [
{ id: 1, description: "Cat1" },
{ id: 2, description: "Cat2" },
{ id: 3, description: "Cat3" }];
2 番目の問題:ビューを表示するときに、カテゴリ ドロップダウンに既にデータが含まれている場合、検証が機能します (つまり、ユーザーがドロップダウンをクリアすると、フィールドが赤でマークされます)。ただし、ビューが表示されたときにカテゴリ ドロップダウンにデータが含まれていない場合、ドロップダウンは赤でマークされません。
検証が失敗したときに私がすることは、有効でない場合は要素の背景色を変更することです(css 'input-validation-error' >> red colorのおかげです)。
<select data-bind="options: $root.categories,
optionsText: 'description',
optionsValue: 'id',
optionsCaption: 'Choose...',
value: category,
validationOptions: { errorElementClass: 'input-validation-error' },
valueUpdate: 'afterkeydown'">
</select>
ドロップダウンの検証が機能しなかった理由を誰か知っていますか?
ありがとう。