私は興味深い問題を発見しました。 エラー:asp.net mvcモデル状態エラーキー
[{
Key = FirstApplicant.Firstname
Value = ["First name is required field"]
},
{
Key = FirstApplicant.Surname
Value = ["Surname name is required field"]
}].
をすべての罰金である、と私はモデルの状態を確認し、エラーがモデルに存在するとき、私はこのような何かを得る
public class ApplicantModel
{
[Display(Name = "Firstname", ResourceType = typeof(Resources))]
[MaxLength(50, ErrorMessageResourceName = "FirstName", ErrorMessageResourceType = typeof(Validations), ErrorMessage = null)]
[Required(ErrorMessageResourceName = "FirstName", ErrorMessageResourceType = typeof(Validations), ErrorMessage = null)]
public string Firstname { get; set; }
[Display(Name = "Surname", ResourceType = typeof(Resources))]
[MaxLength(50, ErrorMessageResourceName = "Surname", ErrorMessageResourceType = typeof(Validations), ErrorMessage = null)]
[Required(ErrorMessageResourceName = "Surname", ErrorMessageResourceType = typeof(Validations), ErrorMessage = null)]
public string Surname { get; set; }
}
: は、私はこのようなモデルを持っています
それはまたいいです。
編集: これはJSONオブジェクトとして可視化されたc#ModelStateオブジェクトです。実際のオブジェクトは次のようになります。
ModelState
{System.Web.Mvc.ModelStateDictionary}
Count: 2
IsReadOnly: false
IsValid: false
Keys: Count = 2
Values: Count = 2
Results View: Expanding the Results View will enumerate the IEnumerable
ただし、私の質問はあります。何とかキーを変更することは可能ですか?私は、キーがオブジェクトの名前として作成され、次にそのオブジェクトの名前プロパティとして作成されることを知っています。 これは意味がありますが、このデフォルトの動作を変更する方法はありますか?または、オブジェクトの名前を変更する必要がありますか?
EDIT2:
私はここで達成しようとしている何が、私はC#のビューモデルとノックアウトのViewModelを持っているということです。あなたがサーバ側のバリデーションを行うときには、このシリアライズしてクライアントに送るキーと値の辞書を取得します。 そして私は、クライアント上でそれにこの関数を呼び出す:
var errors = @Html.Raw(Json.Encode(Model.Errors));
function showErrors(serializedErrors) {
var errors = JSON.parse(serializedErrors);
for (var i = 0; i < errors.length; i++) {
var error = errors[i];
var key = error.Key;
var property = eval("masterModel." + key);
property.setError(error.Value.ErrorMessage);
property.isModified(true);
}
}
showErrors(errors);
とビューモデルのプロパティ名は、サーバーとクライアントで一致した場合、これは正常に動作します。しかし、例えばサーバー側ではFirstApplicant.FirstNameがあり、クライアント側ではApplicantOne.firstnameです。ヘルプとコメントをありがとうございました。今回私の問題をより詳しく説明してほしい。
あなたのコードの一部は、このJSONレスポンスを作成されています。ここ
そして、それのためにテストされていますか? – Shyju
これはJSONコードではありません。申し訳ありませんが、私はそれをもっと詳しく記述するべきです。 ModelState Keys/Valuesオブジェクトです。しかし、それをJSONオブジェクトとして視覚化する方が簡単でした。実際のオブジェクトは次のようになります。ModelState {System.Web.Mvc。ModelStateDictionary} 数:22 IsReadOnlyの:偽 でIsValid:偽 キー:= 22の カウント値:= 22の 結果ビューをカウント:ビューはあなたが 'FirstApplicant.Firstname' を変更する意味ですかIEnumerableを – xszaboj
を列挙する結果を拡大例えば「名前」? – Monah