C# asp.net mvc中的通用http结果

C# asp.net mvc中的通用http结果,c#,.net,asp.net-mvc,C#,.net,Asp.net Mvc,我已经参与了几个MVC项目,在几乎所有的项目中,我都看到了一些操作上的类似逻辑 我们经常返回这样的对象: public class HttpPrjNameResult<T> { public PrjNameStatus Status { get; set; } public string Message { get; set; } public T data{ get; set; } } 公共类HttpPrjNameResult{ 公共PrjNameStat

我已经参与了几个MVC项目,在几乎所有的项目中,我都看到了一些操作上的类似逻辑

我们经常返回这样的对象:

public class HttpPrjNameResult<T> {
    public PrjNameStatus Status { get; set; }
    public string Message { get; set; }
    public T data{ get; set; }
}
公共类HttpPrjNameResult{
公共PrjNameStatus状态{get;set;}
公共字符串消息{get;set;}
公共T数据{get;set;}
}
所以我想知道:

  • 有没有标准的MVC功能

  • 如果没有-为什么

  • 或者我可能使用了错误的模式来编写代码

  • UDPATE: 我会更新一点问题。 假设我正在使用UpdateReports方法创建web api,该方法返回已更新实体的列表:

    public HttpTestResult<List<Report>> UpdateReports(IEnumerable<Reports> reports){
        try{
            var res = SaveReports(reports);
            return new HttpTestResult<List<Report>>{
                Status = TestStatus.Success,
                Data = res
            }
        }
        catch(Exception e){
            logger.Error(e);
            return new HttpTestResult<Object>{
                Status = TestStatus.Error,
                Message = "Error while saving reports"
            }
        }
    }
    
    公共HttpTestResult更新报告(IEnumerable报告){
    试一试{
    var res=保存报告(报告);
    返回新的HttpTestResult{
    Status=TestStatus.Success,
    数据=res
    }
    }
    捕获(例外e){
    错误(e);
    返回新的HttpTestResult{
    Status=TestStatus.Error,
    Message=“保存报告时出错”
    }
    }
    }
    
    我认为这种逻辑在整个项目中都很有用,我想更多的是API风格,而不是纯mvc,但仍然是。
    问题是-我做错什么了吗?这是一个重新发明的轮子,而且已经有了这种逻辑的内置功能,我知道你基本上在寻找这种功能

    有一种方法可以帮助您了解如何实现它。我不能说这是最佳实践,但你可以从中得到一些想法


    主要思想是创建
    ICommandHandler
    ICommandDispatcher
    接口,帮助您将基本逻辑放在一个地方。

    如果我正确理解您的问题,您会问如何根据是否遇到异常返回成功或失败结果

    您可能希望查看(MVC)或(Http)接口。这些过滤器将监听任何异常,并执行您定义的一些自定义操作,例如(MVC示例):

    如果您使用异常过滤器来处理发生的任何异常,则您的控制器可以自由地专注于成为控制器:

    [ResponseType(typeof (List<Report>))]
    public IHttpActionResult UpdateReports(IEnumerable<Reports> reports)
    {
        var results = SaveReports(reports).ToList();
        return Ok(results);
    }
    
    [ResponseType(typeof(List))]
    公共IHttpActionResult更新报告(IEnumerable报告)
    {
    var results=SaveReports(reports).ToList();
    返回Ok(结果);
    }
    
    不清楚你在问什么?您试图返回到何处?需要更多代码/上下文。你在这门课上讲的是什么情况?现在你把它弄得更糊涂了。这是webapi还是mvc?你的标题/标签是mvc,然后你说
    让我们假设我正在创建web api
    @Alex asp.net mvc为你提供了实现APIC的能力谢谢你的回答,但我想知道还有什么。返回这样的HttpTestResult有意义吗?如果有意义,为什么MVC中没有内置功能?@ValentinVynogradskiy是的,如果您想在客户端以相同的方式处理所有响应,这很有意义。MVC提供了很好的
    ViewModel
    功能,我相信开发人员不会从一开始就实现这些功能,因为如果您是初学者,老实说,在简单的应用程序中不需要它,这很难理解。
    [ResponseType(typeof (List<Report>))]
    public IHttpActionResult UpdateReports(IEnumerable<Reports> reports)
    {
        var results = SaveReports(reports).ToList();
        return Ok(results);
    }