当 ASP.NET 6.0 Core MVC 中一个或多个字段未赋值时如何给出错误消息

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

用户可以将服装(图像/图片)发布到网站。 如果用户想要发布一套服装,他需要给该服装一些值。该装备需要有列

Price
Title
Path
(来自文件资源管理器)和
category
(这是一个枚举)。

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

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

当所有属性都被赋予值时,具有给定值的服装将进入数据库。

这是我的服装模型:

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)

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

谢谢!

asp.net-mvc asp.net-core asp.net-core-webapi .net-6.0
1个回答
1
投票

因此,在 HttpPost 方法内部应该有一些代码,告诉程序如果我之前提到的一个或多个属性没有给出值,则给出错误?

有很多方法可以实现这一目标。一种是

model validation
model 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; }
    }

输出:

enter image description here

注:

如果您检查捕获的屏幕截图,您会看到当我发送空请求时,它会回复

400
表示验证失败,如下所示:

enter image description here

因此使用

[Required]
注释你可以处理这个而无需编写 任何额外的验证代码。
[Required]
因为你的
controller action
论证会做到这一点。

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