首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子对象的AddModelError?

子对象的AddModelError?
EN

Stack Overflow用户
提问于 2012-12-21 20:28:14
回答 1查看 562关注 0票数 0

我在我的网站上有一个使用这些模型类的设置页面:

代码语言:javascript
复制
public class NameVm
{
    public string GivenName { get; set; }
    public string FamilyName { get; set; }
}

public class PasswordVm
{
    public string OldPassword { get; set; }
    public string NewPassword { get; set; }
    public string ConfirmPassword { get; set; }
}

public class AccountVm
{
    public NameVm Name { get; set; }
    public PasswordVm Password { get; set; }
}

这是控制器:

代码语言:javascript
复制
public class AccountController : Controller
{
    [HttpGet]
    public override ActionResult Index()
    {
        var accountVm = AccountVmFromActiveUser();
        return View(accountVm);
    }

    [HttpPost]
    public ActionResult EditName(NameVm vm)
    {
        ...
    }

    [HttpPost]
    public ActionResult EditPassword(PasswordVm vm)
    {
        if (ModelState.IsValid)
        {
            if (!ValidateUser(this.ActiveUser, vm.OldPassword))
            {
                ModelState.AddModelError("????",
                    "Existing password is incorrect.");
            }
            else
                UpdateUserPassword(vm);
        }

        var accountVm = AccountVmFromActiveUser();
        accountVm.Password = vm;
        return View(accountVm);
    }
}

在我的Account.cshtml文件中,我定义了两个表单--一个提交给EditName,一个提交给EditPassword。这是一个很大的文件,所以这里有一个小的摘录:

代码语言:javascript
复制
@Html.EditorFor(model => model.Password.OldPassword)
@Html.ValidationFor(model => model.Password.OldPassword)

我的问题是:如何让ValidationFor显示我在EditPassword方法中添加的错误消息?我尝试使用"Password.OldPassword"的密钥,但这不起作用。

或者,我在这里采取了错误的方法吗?我应该如何处理在同一页上有两个表单?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-21 21:12:47

您可以使用分部视图。

1)在Account.cshtml中,分离提交passord的表单,并将其放入分部视图_EditPassword.cshml (通常我将分部视图放在Views\Shared文件夹中)

使用

代码语言:javascript
复制
@Html.Partial("_EditPassword", @Model.Password)

Account.cshtml中渲染局部视图的步骤

2)在局部视图_EditPassword.cshtml中,您可以使用

代码语言:javascript
复制
@Html.EditorFor(model => model.OldPassword)
@Html.ValidationFor(model => model.OldPassword)

并且您应该会看到验证错误

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13990213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档