【问题标题】:Modelstate validate fields that are not requiredModelstate 验证不需要的字段
【发布时间】:2013-02-22 16:01:34
【问题描述】:

我遇到了这个问题,我需要使用 ID 验证模型,但我不想显示 ID,我尝试将其放在隐藏字段中。

这是我的模型:

namespace MyApp.Models
{
    public class ObjInfo
    {
        /// <summary>
        /// Variable declaration.
        /// </summary>

        public int m_Id { get; set; }

        [Required(ErrorMessage = "Obj Name is required.")]
        [MaxLength(75)]
        [Display(Name = "Obj Name")]
        public string m_Name { get; set; }

        [Display(Name = "Obj Symbol")]
        public string m_SymbolText { get; set; }

(...) } }

我只放了有问题的字段和另一个字段。我的模型中还有其他不相关的数据。

现在这是我为此模型的“创建”视图:

@model MyApp.Models.ObjInfo

@{
    ViewBag.Title = "Create";
}

<h2>Create New Obj</h2>

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

    <fieldset>
        <legend>OBJ</legend>

        @Html.HiddenFor(model => model.m_Id)

        <div class="editor-label">
            @Html.LabelFor(model => model.m_Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.m_Name)
            @Html.ValidationMessageFor(model => model.m_Name)
        </div>

        (...)

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

<div>
    @Html.ActionLink("Back to obj list", "Index")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

所以当我确认这个 obj 的创建时,ModelState 总是因为提供了 ID 而返回 false,但我不能向用户显示这个 ID,我需要它来处理管理问题。

简单地说,我认为我的隐藏字段中没有数据。但这无关紧要,因为我的 BD 无论如何都会给该对象一个正确的 ID。我该如何解决这个问题?

非常感谢。

【问题讨论】:

  • 作为信息的补充,当一行: if (ModelState.IsValid) 被命中时,它总是假的,对象的所有字段都是键,因此它会验证每个字段,即使,就像我的模型中显示的那样,并非所有字段都标记为必填。
  • 只是,删除隐藏字段。因为你不需要设置ID。 ID初始化是DB的工作。
  • 哇!工作完美。哈哈!谢谢你:)
  • 您需要在编辑视图中隐藏 id 字段...

标签: c# asp.net-mvc hidden-field


【解决方案1】:

当您在操作中检索模型时,使用 Bind 排除 m_Id

public ActionResult Example([Bind(Exclude = "m_Id")] ObjInfo objInfo)
{ 
    ...
}

【讨论】:

  • 有趣!我会在编辑我的对象时尝试一下。谢谢!
【解决方案2】:

试试这个 公共诠释? m_Id { 得到;放; }

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    相关资源
    最近更新 更多