ASP.NET Core Web API - 当前上下文中不存在名称“jsonString”

Posted

技术标签:

【中文标题】ASP.NET Core Web API - 当前上下文中不存在名称“jsonString”【英文标题】:ASP.NET Core Web API - The name 'jsonString' does not exist in the current context 【发布时间】:2022-01-02 19:25:24 【问题描述】:

我正在使用 ASP.NET Core Web API。我有这个代码:

视图模型(Dto):

public class MandateDto

    public DateTime DueDate  get; set; 
    public DateTime StartDate  get; set; 
    public DateTime EndDate  get; set; 
    public int? MandateId  get; set; 

public class TransactionDto

    public string? RawData  get; set; 

实体映射器:

public class EntityMapper

    public Mandate FromMandateDtoToMandate(MandateDto mandate)
    
        Mandate mandate = new Mandate()
        
            DueDate = mandate.DueDate,
            StartDate = mandate.StartDate,
            EndDate = mandate.EndDate
        ;
        string jsonString = JsonSerializer.Serialize(mandate);
        return mandate;
    

    public TransactionLog FromMandateDtoToTransactionLog(TransactionDto mandate)
    
        return new TransactionLog
        
            RawData = jsonString,
        ;
    

授权服务:

    public async Task<Mandate> Post(MandateDto mandate)
    
        var mapper = new EntityMapper();
        var mandate = mapper.FromMandateDtoToMandate(mandate);
        var transaction = mapper.FromMandateDtoToTransactionLog(mandate);

        try
        
            await _unitOfWork.MandateRepository.Insert(mandate);
            await _unitOfWork.TransactionRepository.Insert(transaction);
            await _unitOfWork.SaveChangesAsync();
        
        catch (Exception e)
        
            throw new Exception(e.Message);
        

        return mandate;
        return transaction;
    

EntityMapper 所示,我想将 jsonStringFromMandateDtoToMandate 转移到 FromMandateDtoToTransactionLog 中,如下所示:

原始数据 = jsonString

我收到了这个错误:

错误 CS0103 当前上下文中不存在名称“jsonString”

我该如何解决这个问题?

谢谢。

【问题讨论】:

您的 FromMandateDtoToTransactionLog 方法没有称为 jsonString 的参数/变量,所以这就是它无法编译的原因。 您的 jsonString 变量在另一个方法中声明,在您尝试访问它的地方不可用。您应该阅读有关变量范围的信息。 JsonSerializer.Serialize(mandate) 移动到FromMandateDtoToTransactionLog;无论如何,你没有在FromMandateDtoToMandate 中使用jsonString @MartinCostello - 我该怎么办? @JohnathanBarclay - FromMandateDtoToTransactionLog 和 FromMandateDtoToMandate 有不同的模型。 jsonString 由在 FromMandateDtoToMandate 中完成的 Mandate 模型中的所有属性生成。 【参考方案1】:

您必须使用jsonString 添加此行,否则此范围内不存在该变量

public TransactionLog FromMandateDtoToTransactionLog(MandateDto mandate)

    string jsonString = JsonSerializer.Serialize(mandate); //add this line!
    return new TransactionLog
    
        RawData = jsonString,
    ;

【讨论】:

以上是关于ASP.NET Core Web API - 当前上下文中不存在名称“jsonString”的主要内容,如果未能解决你的问题,请参考以下文章

将文件从 ASP.NET Core Web api 发布到另一个 ASP.NET Core Web api

以编程方式在我的 ASP .net Core Web API 中获取 TFS 工作项详细信息?

asp.net web.config的设置问题

ASP.NET Core Web Api 自动帮助页面

ASP.NET Core Web API

Asp.Net Core 1.1 消费web api