タイトルに記載されているように、かみそりは、ページがエラーまたは通常の状態でレンダリングされるタイミングをどのように知るのですか?
検証メッセージなどが表示されたエラーモードでページを表示できるように、この情報を知る必要があります。残念ながらView()
、無効な状態のモデルを検出するコードがサブビューにあるため、単純に表示することはできません。
編集
私はかみそりにエラーモードでビューをレンダリングさせるためにこのようなことをしようとしています:
// just for tests....
// model: a model which was marked as invalid in different controller
// state: state of the model from that controller
public ActionResult asdf(TModel model, ModelStateDictionary state) {
var result = View(this.Partial, model);
result.ViewData.ModelState.Clear();
foreach (var x in state) {
result.ViewData.ModelState.Add(x.Key, x.Value);
}
return result;
}
EDIT2
最終的な解決策。以前の試みでは、Jsonからc#型への自動逆シリアル化が機能しなかったため(原文のまま)、プレーンなjson文字列を受け取り、次のような別のライブラリで逆シリアル化することにしました。
public ActionResult ErrorIndex(string jsonParamsString) {
var param = Newtonsoft.Json.JsonConvert.DeserializeObject<ForceInvalidStateRequestArg<TModel>>(jsonParamsString);
if (param != null && param.Errors != null) {
this.ModelState.Clear();
foreach (var s in param.Errors) {
this.ModelState.AddModelError(s.PropertyName, s.ErrorMessage);
}
}
var result = View(this.PartialName, param == null ? this.NewModel : param.Model);
return result;
}