質問

MVC3を使用するときにエラーを取得します属性をネストされたプロパティと比較します。

サンプルコードは次のとおりです。

モデルとビューモデル:

public class Data
{
    public string Input { get; set; }
}

public class DataVM
{
    public Data Data { get; set; }
    [Compare("Data.Input")]
    public string ConfirmInput { get; set; }
}

コントローラー:

public ActionResult Data() {
    return View(new DataVM());
}

[HttpPost]
public ActionResult Data(FormCollection fc) {
    DataVM vm = new DataVM();
    TryUpdateModel(vm, fc);
    if (ModelState.IsValid){
        return Content("Success!!!");
    }
    return View(vm);
}

意見:

@model myth.Models.ViewModels.DataVM

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)

@Html.EditorFor(m => m.Data.Input)
@Html.ValidationMessageFor(m => m.Data.Input)
<br />
@Html.EditorFor(m => m.ConfirmInput)
@Html.ValidationMessageFor(m => m.ConfirmInput)
<br />
<input type="submit" value="Save" />
}
<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>

Compare( "input")]を使用すると、クライアント側の検証が失敗します。 [比較( "data.input")]を使用すると、クライアント側の検証が機能しますが、サーバー側は失敗します。 Class CompareAttribute.cs、メソッド

protected override ValidationResult IsValid(...) { .. }, 

data.inputプロパティを見つけられません。

ネストされたプロパティの比較に比較に使用する正しい方法は何ですか?

正しい解決策はありません

他のヒント

ビューモデルを変更し、後でエンティティにマップします。

public class DataVM
{
    public string Input { get; set; }

    [Compare("Input")]
    public string ConfirmInput { get; set; }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top