为什么我的编辑界面验证允许空?

问题描述 投票:1回答:3

我添加了一个字段添加到视图模型的Document应该允许用户将其与Tenant关联。如果用户不指定租户它工作正常,但如果从下拉列表中选择空选项,然后验证告诉我,“条目标识字段是必需的。”,其中ItemIDTenantViewModel领域。

它发生,我认为也许是我使用的编辑器模板错了 - 我试图从租户的列表中进行选择,而不是编辑租客。如果说的不对,让我知道,也许提出一个更好的方式来获得的下拉列表。

namespace TenantPortal.Models
{
    public class DocumentViewModel
    {
        ...

        [UIHint("SelectTenant")]
        public TenantViewModel Tenant { get; set; }
     }

    public class TenantViewModel
    {
        private Tenant _ten = null;

        public int ItemID { get; set; }

        public string Display_Name { get; set; }

        public string Legal_Name { get; set; }

        ...
    }
}

编辑模板:SelectTenant.cshtml

@using CMS.DocumentEngine.Types.Tenantportal
@using TenantPortal.Models
@model TenantViewModel

@{ 
    Layout = null;

    var opts = new SelectList(TenantProvider.GetTenants(), "ItemID", "Display_Name");
}

@Html.DropDownListFor(model => model.ItemID, opts, "(none)")
c# asp.net-mvc mvc-editor-templates
3个回答
1
投票

如果你使用的数据注解,你可以添加验证模型。

请参阅下面我举的例子:

public class TenantViewModel
{
    private Tenant _ten = null;

    [Required]
    public int ItemID { get; set; }

    [Required]
    [MaxLength(30)]
    public string Display_Name { get; set; }

    public string Legal_Name { get; set; }

    ...
}

有关数据说明check this更多信息

此外,您的代码/控制器操作的一面,你需要使用ModelState.IsValid检查,以验证您的模型是否有效还是无效


1
投票

ItemID字段是int所以它不会允许空值,因此模型验证失败。试着改变它int?(可为空INT)。如果值未设置形式,则该值将是无效的,但如果选择的值,则ItemID将选定的值。


0
投票

我最终加入另一个属性我叫TenantID文档视图模式,有它背后的幕后的Tenant物业沟通,并创造了两个创建和编辑观点TenantID下拉菜单SelectLists。这比我想的那么优雅,但它的作品。

© www.soinside.com 2019 - 2024. All rights reserved.