Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 我可以在没有 的情况下进行ASP.NET MVC模型验证吗;风景?_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 我可以在没有 的情况下进行ASP.NET MVC模型验证吗;风景?

Asp.net mvc 我可以在没有 的情况下进行ASP.NET MVC模型验证吗;风景?,asp.net-mvc,Asp.net Mvc,我可以在没有MVC视图的情况下利用ASP.NET MVC模型验证(例如使用DataAnnotations)吗(因此也没有视图中的自动模型绑定魔法) 例如,我可能有一个webhook直接命中控制器操作-无视图-并且我手动填充我的模型,但我仍然希望从模型属性的DataAnnotation验证中获益。DataAnnotation是.Net Framework附带的System.ComponentModel.DataAnnotations.dll的一部分 请随意使用 您给我的示例似乎希望通过WebApi

我可以在没有MVC视图的情况下利用ASP.NET MVC模型验证(例如使用DataAnnotations)吗(因此也没有视图中的自动模型绑定魔法)


例如,我可能有一个webhook直接命中控制器操作-无视图-并且我手动填充我的模型,但我仍然希望从模型属性的DataAnnotation验证中获益。

DataAnnotation是.Net Framework附带的System.ComponentModel.DataAnnotations.dll的一部分

请随意使用

您给我的示例似乎希望通过WebApi公开业务逻辑

简短的回答是可以的,你可以用

然而,最重要的是,通过引入WebApi来扩展您的体系结构,这样MVC和WebApi之间的代码是共享的

public class Recipe
{
    [Required]
    public string Name { get; set; } 
}


var recipe = new Recipe();
var context = new ValidationContext(recipe, serviceProvider: null, items: null);
var results = new List<ValidationResult>();

var isValid = Validator.TryValidateObject(recipe, context, results);

if (!isValid)
{
    foreach (var validationResult in results)
    {
        Console.WriteLine(validationResult.ErrorMessage);
    }
}
公共类配方
{
[必需]
公共字符串名称{get;set;}
}
var recipe=新配方();
var context=newvalidationcontext(配方、服务提供者:null、项目:null);
var results=新列表();
var isValid=Validator.TryValidateObject(配方、上下文、结果);
如果(!isValid)
{
foreach(结果中的var validationResult)
{
Console.WriteLine(validationResult.ErrorMessage);
}
}
参考:


DataAnnotation是.Net Framework附带的System.ComponentModel.DataAnnotations.dll的一部分

请随意使用

您给我的示例似乎希望通过WebApi公开业务逻辑

简短的回答是可以的,你可以用

然而,最重要的是,通过引入WebApi来扩展您的体系结构,这样MVC和WebApi之间的代码是共享的

public class Recipe
{
    [Required]
    public string Name { get; set; } 
}


var recipe = new Recipe();
var context = new ValidationContext(recipe, serviceProvider: null, items: null);
var results = new List<ValidationResult>();

var isValid = Validator.TryValidateObject(recipe, context, results);

if (!isValid)
{
    foreach (var validationResult in results)
    {
        Console.WriteLine(validationResult.ErrorMessage);
    }
}
公共类配方
{
[必需]
公共字符串名称{get;set;}
}
var recipe=新配方();
var context=newvalidationcontext(配方、服务提供者:null、项目:null);
var results=新列表();
var isValid=Validator.TryValidateObject(配方、上下文、结果);
如果(!isValid)
{
foreach(结果中的var validationResult)
{
Console.WriteLine(validationResult.ErrorMessage);
}
}
参考:


TryValidateModel在此处也显得相关。。。?另外,关于您的评论“您给我的示例看起来像是希望通过WebApi公开业务逻辑”,这本身并不是我的意图。即使我直接点击我的控制器(没有视图),在这种情况下我仍然没有使用WebApi。就我而言,这可能是一个糟糕的例子。TryValidateModel在这里似乎也有关联。。。?另外,关于您的评论“您给我的示例看起来像是希望通过WebApi公开业务逻辑”,这本身并不是我的意图。即使我直接点击我的控制器(没有视图),在这种情况下我仍然没有使用WebApi。所以对我来说,这可能是个糟糕的例子。