首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将部分模型重用于多个页面

如何将部分模型重用于多个页面
EN

Stack Overflow用户
提问于 2021-06-29 23:56:45
回答 2查看 56关注 0票数 2

我有一个现有的asp.net核心剃刀页面,为我们的安全团队记录事件。他们也想记录失物招领事件,但将它们与安全事件分开保存。我想重用相同的数据库表并区分记录(AppType)。虽然这两个应用程序有许多相似之处,但Lost and Found并不使用所有相同的属性(即L&F不会使用SubjectDOB,但在安全模型中是必需的。这将导致(!ModelState.IsValid)返回false。对于仅用于我需要的属性的失物招领,重用SecurityLog模型的最佳方式是什么?也许我需要把班级分开?

代码语言:javascript
运行
复制
public class SecurityLog
{        
    public string AppType { get; set; }
    
    [Required]
    [Display(Name = "Subject's First Name")]
    public string SubjectFirst { get; set; }

    [Required]
    [Display(Name = "Subject's Last Name")]
    public string SubjectLast { get; set; }

    [Required]
    [Display(Name = "Subject's B#/DOB")]
    public string SubjectDOB { get; set; }

    [Display(Name = "Entered By")]
    public string EnteredBy { get; set; }
    
    etc...
 }

我已经尝试从模型中删除subjectDOB,但这不起作用b/c它是必需的。

代码语言:javascript
运行
复制
public async Task<IActionResult> OnPostAsync()
{
     ModelState.Remove("SubjectDOB");                        

     if (!ModelState.IsValid)
     {
        return Page();
     }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-30 16:17:24

ModelState.Remove(keyname);应该能像预期的那样工作。确保密钥名称正确。

下面是一个您可以参考的示例:

Index.cshtml:

代码语言:javascript
运行
复制
@page
@model IndexModel
<form method="post">
    <input asp-for="SecurityLog.EnteredBy" />
    <input asp-for="SecurityLog.SubjectFirst" />
    <input asp-for="SecurityLog.SubjectLast" />
    <input asp-for="SecurityLog.SubjectDOB" />
    <input type="submit" />
</form>  

Index.cshtml.cs:

代码语言:javascript
运行
复制
public class IndexModel : PageModel
{
    public SecurityLog SecurityLog { get; set; }
    public async Task<IActionResult> OnPostAsync([Bind(Prefix = "SecurityLog")]SecurityLog model)
    {
        ModelState.Remove("SecurityLog.SubjectDOB");

        if (!ModelState.IsValid)
        {
            return Page();
        }
        return Page();
    }
    public async Task<IActionResult> OnGetAsync()
    {
        return Page();
    }
}
票数 2
EN

Stack Overflow用户

发布于 2021-06-30 16:24:32

抽象可用于将所有基本属性提取到单独的可重用类中。

代码语言:javascript
运行
复制
public class BaseSecurityLog
{        
    public string AppType { get; set; }

    [Required]
    [Display(Name = "Subject's First Name")]
    public string SubjectFirst { get; set; }

    [Required]
    [Display(Name = "Subject's Last Name")]
    public string SubjectLast { get; set; }

    [Display(Name = "Entered By")]
    public string EnteredBy { get; set; }
}

public class SecurityLog : BaseSecurityLog
{
    [Required]
    [Display(Name = "Subject's B#/DOB")]
    public string SubjectDOB { get; set; }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68182105

复制
相关文章

相似问题

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