【问题标题】:How to give a error message when one or more fields are not given a value in ASP.Net 6.0 Core MVC如何在 ASP.Net 6.0 Core MVC 中没有给一个或多个字段赋值时给出错误消息
【发布时间】:2022-10-06 02:02:24
【问题描述】:

用户能够将服装(图像/图片)发布到网站。 如果用户想要发布服装,他需要给服装一些值。服装需要有:价格,标题,小路(来自文件资源管理器)和一个类别(这是一个枚举)。

可以通过下拉菜单选择类别,标题和价格通过文本框给出值。

所以结论是,为了能够发布服装,您需要上传一张图片并在同一个视图中为该图片赋予一些值。如果其中一个属性没有给出值(例如没有选择图像,或者没有给出价格值)应该有一个错误: 缺少其中一个字段。

当所有属性都被赋予一个值时,具有给定值的装备会进入数据库。

这是我的服装模型:


public class OutfitVM
{
    public enum OutfitCategory
    {
        Trendy,
        Chic,
        Oldschool,
        Casual
    }

        [Required]
        public int? Prijs { get; set; }
        [Required]
        public string? Titel { get; set; }
        public string? FileAdress { get; set; }
        [Required]
        public OutfitCategory? DeCategory { get; }
        public bool Retry { get; set; }

        //public List<Review> Reviews { get; set; } = new List<Review>();

        public OutfitVM(string titel, int prijs, string fileadress, OutfitCategory 
        category)
    {
        this.Titel = titel;
        this.Prijs = prijs;
        this.FileAdress = fileadress;
        DeCategory = category;
    }
    
    public OutfitVM()
    {

    }
}

这是迄今为止的控制器:

  public class ToevoegController : Controller
        {
                private readonly ILogger<ToevoegController> _logger;
    
            public ToevoegController(ILogger<ToevoegController> logger)
            {
                _logger = logger;
            }
    
            public ActionResult OutfitToevoegen()  //IActionresult is een interface en 
                actionresult is een implimentatie daarvan
            {
                OutfitVM outfitVM = new OutfitVM();
                outfitVM.Retry = false;
                return View(outfitVM);
                //dit uitleg? wrm maak je nieuwe vm aan en wrm geef je die mee aan view
            }
    
            [HttpPost]
            public IActionResult OutfitToevoegen(OutfitVM outfit)
            {
                   
      
            }
        }

所以在 HttpPost 方法中应该有一些代码告诉程序如果我前面提到的一个或多个属性没有被赋予一个值时给出一个错误。

OutfitCategory = category (which is chosen via a drop down menu)
Prijs = price (which is given a value via a textbox)
Title = title (which is given a value via a textbox)
FileAdress = path (which is automatically given a value when the user chooses a picture from file explorer)

一旦服装的每个属性都被赋予了一个值,那么服装(图像)和与之关联的值就会进入数据库。

谢谢!

  • 有很多方法可以做到这一点。一种是model validationmodel bindings。您可以在控制器中使用[Required],例如public IActionResult OutfitToevoegen([Required] OutfitVM outfit)

标签: asp.net-mvc asp.net-core asp.net-core-webapi .net-6.0


【解决方案1】:

所以在 HttpPost 方法中应该有一些代码告诉程序如果我前面提到的一个或多个属性没有被赋予一个值时给出一个错误?

有很多方法可以做到这一点。一种是model validationmodel bindings。 您可以在控制器中使用 [Required],例如 public IActionResult OutfitToevoegen([Required] OutfitVM outfit)

控制器:

使用 Required 注释的模型绑定可以在控制器级别执行 Model bindings

    [HttpPost]
    public IActionResult OutfitToevoegen([Required] OutfitVM outfit)
    {

        return Ok(outfit);
    }

样品型号:

public class OutfitVM
    {
        public string Prijs { get; set; }
        public string Titel { get; set; }
        public string FileAdress { get; set; }
    }

输出:

笔记:

如果您检查捕获的屏幕截图,您会看到当我发送空请求时,它会回复 400 说验证失败,如下所示:

因此,使用[Required] 注释您无需编写即可处理此问题 任何额外的验证代码。 [Required] 作为您的 controller action 参数将做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-06
    • 2015-12-21
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多