Asp.net MVC3比较属性:与嵌套属性比较时出现错误



对嵌套属性使用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")],客户端验证失败。如果我使用[Compare("Data.Input")],客户端验证工作,但服务器端失败。在类compareattributes .cs中,方法

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

找不到数据。输入属性。

使用Compare进行嵌套属性比较的正确方法是什么?

更改视图模型并稍后映射回您的实体:

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

相关内容

  • 没有找到相关文章

最新更新