MVC模型验证

2023-11-29

因此,我当前正在构建一个需要用户模型验证的应用程序,如果向用户填写了不正确的属性,它会告诉他们。 我已设置数据注释,但我不确定如何将错误消息转发回用户? 到目前为止,我已经在我的模型和视图上进行了设置。

Model

public class DatabaseModel
    {
        [Required(ErrorMessage = ("A first name is required"))]
        public string FirstName { get; set; }
        [Required(ErrorMessage = ("A last name is required"))]
        public string LastName { get; set; }
        [Required(ErrorMessage = ("A valid role is required"))]
        public string Role { get; set; }
        // TODO - Validate rank to only b 1 - 10
        //
        [Range(1,10, ErrorMessage = ("A rank between 1 and 10 is required"))]
        public int Rank { get; set; }      

    }

And View

@model RoleCreatorAndEditor.Models.DatabaseModel
@{
    ViewData["Title"] = "Index";
}

<h2>User Information</h2>

<p>This is your user information!</p>

@using (Html.BeginForm("Index", "Home", FormMethod.Post)) {
    @Html.Label("First Name")
    <br>
    @Html.TextBoxFor(m => m.FirstName)
    <br>
    @Html.Label("Last Name")
    <br>
    @Html.TextBoxFor(m=>m.LastName)
    <br>
    @Html.Label("Role")
    <br>
    @Html.TextBoxFor(m => m.Role)
    <br>
    @Html.Label("Rank")
    <br>
    @Html.TextBoxFor(m => m.Rank)
    <br><br>
    <input type="submit" value="Save">
}

My 控制器

public class HomeController : Controller
    {
        // GET: Home
        [HttpGet]
        public ActionResult Index()
        {
            DatabaseModel model = new DatabaseModel();
            return View(model);
        }
        [HttpPost]
        public ActionResult Index(DatabaseModel model)
        {
            if (ModelState.IsValid)
            {
                ListToDatatable convert = new ListToDatatable();
                DataTable user = convert.Convert(model);
                DatabaseRepository dbRepo = new DatabaseRepository();
                dbRepo.Upload(user);
            }
            return View();
        }
    }

我相信模型需要传递回视图才能显示错误消息,尽管我已经阅读了 ASP.NET 上的文档,但我无法理解他们如何添加错误消息并且表单知道如何显示给用户带来错误。

我非常困惑。


你需要使用ModelState.IsValid在你的控制器中以及@Html.ValidationMessageFor(model => model.FirstName)在你看来:

public ActionResult Index(ViewModel _Model) 
{ 
    // Checking whether the Form posted is valid one. 
    if(ModelState.IsValid) 
    { 
        // your model is valid here.
        // perform any actions you need to, like database actions,
        // and/or redirecting to other controllers and actions.
    }
    else 
    {
        // redirect to same action
        return View(_Model);
    } 
}

对于你的例子:

@model RoleCreatorAndEditor.Models.DatabaseModel
@{
    ViewData["Title"] = "Index";
}

<h2>User Information</h2>

<p>This is your user information!</p>
@using (Html.BeginForm("Index", "Home", FormMethod.Post)) {
    @Html.LabelFor(m=>m.FirstName)
    <br>
    @Html.TextBoxFor(m => m.FirstName)
    @Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" })

    <br>
    @Html.LabelFor(m=>m.LastName)
    <br>
    @Html.TextBoxFor(m=>m.LastName)
    @Html.ValidationMessageFor(model => model.LastName, "", new { @class = "text-danger" })

    . . .

    <input type="submit" value="Save">
}

控制器:

[HttpPost]
public ActionResult Index(DatabaseModel model)
{
    if (ModelState.IsValid)
    {
        ListToDatatable convert = new ListToDatatable();
        DataTable user = convert.Convert(model);
        DatabaseRepository dbRepo = new DatabaseRepository();
        dbRepo.Upload(user);
    }
    return View(model);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC模型验证 的相关文章

随机推荐

  • 团队构建:使用 MSDeploy 本地发布

    我刚刚开始使用团队构建功能 我发现做一些非常简单的事情所需的大量事情有点令人不知所措 我目前的设置是一个包含 Web 应用程序 组装应用程序和测试应用程序的解决方案 Web 应用程序设置了一个通过文件系统发布的 PublishProfile
  • Magento:将商品添加到购物车时如何更改商品价格

    当我将商品添加到购物车时 我希望能够以编程方式 而不是通过目录或购物车规则 更改商品价格 以下回答以编程方式将产品添加到购物车并更改价格展示了如何在更新购物车时执行此操作 而不是在添加产品时执行此操作 Thanks 您可以使用观察者类来监听
  • 使用 TypeScript 的 React 组件中的默认属性值

    我不知道如何使用 Typescript 为我的组件设置默认属性值 这是源代码 class PageState export class PageProps foo string bar export class PageComponent
  • hibernate加载对象图的正确方法是什么

    假设我有 3 个表 GrandCat Cat 和 Kitt 它们具有一对多的关系 所以我有以下课程 所有关联都是延迟加载 GrandCat int age Set
  • 在 MFC 中添加加速器(快捷方式) - 如何?

    我找到了这个链接 http support microsoft com kb 222829 但我无法理解那么多 好的 我知道我需要将其添加到我的头文件中 HACCEL m hAccelTable 然后是这个 m hAccelTable Lo
  • LaunchDaemons 和环境变量

    一段时间以来 我注意到我的 MacPorts 安装的 Apache2 实例在我启动时尚未启动 MacPorts Apache2 在启动时停止启动 LaunchDaemon 已加载 今天我在日志文件中发现了一些可能指向答案的内容 但我找不到任
  • 启用项目功能时启用 Rust nightly 功能

    在库箱中 我想按需提供回溯并使用 Rust 夜间回溯功能 为了做到这一点 Rust 需要设置 feature backtrace 在我的板条箱根部 有没有办法表达仅当设置了创建级别功能 backtrace 时 我才需要 Rust 夜间功能
  • 使用 Excel 中的 VBA 将 2 个单元格的内容合并到另一个第 3 个单元格中

    我有两个单元格 A1 和 A2 其中每一个的内容都是一个字符串 A1 你好 A2 世界 我的目标是将 A1 和 A2 的内容合并到另一个单元格中 例如A3即A3的内容应该是 你好世界 我想使用 VBA 宏来执行此操作 而不仅仅是将字符串作为
  • 使用 dplyr 按多组进行汇总

    我正在尝试使用 dplyr 来总结基于 2 个组的数据集 年份 和 区域 数据集如下所示 Year Area Num 1 2000 Area 1 99 2 2001 Area 3 85 3 2000 Area 1 60 4 2003 Are
  • 使用 window.onscroll 事件检测页面/框架滚动

    我想定位一个DIV位于页面内 以便即使用户垂直滚动页面 用户也可以看到它 该页面的顶部有一个标题 即75 px高的 现在 当用户位于页面顶部并且没有垂直滚动时 DIV必须位于标题下方 然而 一旦用户滚动页面导致标题消失 同样的DIV现在必须
  • 如何在 PHP 中检查 PDF 文件是否受密码保护 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 使用 PHP 上传多个文件时 如何检查上传的 PDF 文件是否受密码保护 如果它
  • java中如何将时间戳转换为日期和时间?

    我有一个来自 Linux 服务器的 json 时间戳 我想使用 Java 将其转换为简单的日期时间格式 我需要以下格式的日期和时间 dd mm yyyy hh mm ss 这是我的 JSON 数据 batch date 1419038000
  • 同步push_back和std::thread

    My code void build std vector
  • Symfony2 从 api 数据填充选择列表

    我必须通过 Api 调用填充选择列表 我尝试了几种方法但没有成功 我认为最好的方法是实现 ChoiceListInterface 有人已经做到了吗 Thanks Extend 惰性选择列表并实施加载选择列表方法 例如 ApiChoiceLi
  • 复制 Excel 单元格数据直到列中最近的填充单元格

    我是 Excel 的新手 我面临一些问题 我有一个 Excel 工作表 必须将其导入到我的另一个程序中 请考虑以下格式 Heading1 Sub heading1 Sub Sub heading1 Sub Sub heading2 Sub
  • Ruby 数组注入

    我试图使用注入方法记录 10 个线程的平均运行时间 但它给了我这个错误 undefined method for
  • 将文件从 URL 传输到 Cloud Storage

    我是一名 Ruby 开发人员 尝试使用 Python 编写的 Google Cloud Functions 但在将远程文件从给定 URL 传输到 Google Cloud Storage GCS 时遇到了困难 在等效的 RoR 应用程序中
  • 如何使用 android.mk 将 .aar 包含在 AOSP 中

    我需要在 aosp 构建树中使用 android mk 构建一个应用程序 我有一个自定义的 arr lib 它位于以下文件夹 apps libs mylib aar 中 任何人都可以告诉我如何将 aar 包含在 android aosp 构
  • 将“工作集”装入 MongoDB 的 RAM 意味着什么?

    MongoDB 很快 但前提是您的工作集或索引可以放入 RAM 那么 如果我的服务器有 16G RAM 这是否意味着我所有集合的大小都需要小于或等于 16G 如何说 好吧 这是我的工作集 其余的可以 存档 工作集 基本上是系统将处于活动状态
  • MVC模型验证

    因此 我当前正在构建一个需要用户模型验证的应用程序 如果向用户填写了不正确的属性 它会告诉他们 我已设置数据注释 但我不确定如何将错误消息转发回用户 到目前为止 我已经在我的模型和视图上进行了设置 Model public class Da