gpt4 book ai didi

c# - 如何更新模型状态?

转载 作者:太空狗 更新时间:2023-10-29 17:51:15 24 4
gpt4 key购买 nike

这是我用 ajax post 方法调用的 Controller 操作:

    [HttpPost]
public ActionResult Add(Comment comment)
{
if (User.Identity.IsAuthenticated)
{
comment.Username = User.Identity.Name;
comment.Email = Membership.GetUser().Email;
}

if (ModelState.IsValid)
{
this.db.Add(comment);
return PartialView("Comment", comment);
}
else
{
//...
}
}

如果用户已登录,提交表单没有用户名和电子邮件字段,因此他们不会被 ajax 调用传递。当操作被调用时,ModelStat.IsValid 返回 false,因为这两个属性是必需的。为属性设置有效值后,如何触发模型验证以更新 ModelState?

最佳答案

您可以使用自定义 model binder从 User.Identity 绑定(bind)评论的用户名和电子邮件属性。因为绑定(bind)发生在验证之前,所以 ModelState 将是有效的。

另一种选择是实现自定义 model validator对于 Comment 类,它检查 ControllerContext.Controller对于经过验证的用户。

通过实现这些选项中的任何一个,您可以删除第一个 if 检查。

关于c# - 如何更新模型状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4855259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com