无法访问C#中存储在模型中的值

时间:2020-07-20 16:35:30

标签: c# asp.net .net asp.net-mvc asp.net-core

我正在使用models来调用用户以表格形式输入的存储值(在视图页面中)

现在在控制器中工作以从模型访问存储的值。

VerifyProof(string proofRecordId)方法需要另一个进行实际验证的方法VerifyFirstName(proof)

问题是我可以在VerifyProof()方法中访问模型中的值,但无法访问 VerifyFirstName()方法。

我评论了重要部分,看看

public async Task<IActionResult> VerifyProof(string proofRecordId, ConnectionDetailsViewModel model) // ConnectionDetailsViewModel is the name of model
{
    var modelFirstName = model.HolderFirstName; // the value is stored in model.HolderFirstName
        
    var agentContext = await _agentProvider.GetContextAsync();
    var proofRecord = await _proofService.GetAsync(agentContext, proofRecordId);
    var request = JsonConvert.DeserializeObject<ProofRequest>(proofRecord.RequestJson);
    var proof = JsonConvert.DeserializeObject<PartialProof>(proofRecord.ProofJson);
    bool verified = false;
    switch (request.Name)
    {
        case "ProveYourFirstName":
            verified = VerifyFirstName(proof, model); break; // to call the VerifyFirstName Method (where verification happens)
        default:
            break;
    }
    if (!verified)
    {
        proofRecord.State = ProofState.Rejected;
        await _walletRecordService.UpdateAsync(agentContext.Wallet, proofRecord);
    }

    return RedirectToAction("Index");
}

public bool VerifyFirstName(PartialProof proof, ConnectionDetailsViewModel model)
{
    var name = proof.RequestedProof.RevealedAttributes.First();
    if (name.Value.Raw.Equals(holderfirstName)) // instead of holderfirstName, I want to call the model.HolderFirstName
    { 
        return true; 
    }

    return false;
}

VerifyProof()方法存储在变量中的值

var agentContext = Hyperledger.Aries.Agents.DefaultAgentContext

var proofRecord = ProofRecord: State=Accepted, ConnectionId=9e066590-ee03-47e9-8ed2-65e860b8bb10, RequestJson=[hidden], ProofJson=[hidden], ProofRecord: Id=5903845b-ac9e-4a46-b249-a7badc5f8820, TypeName=AF.ProofRecord, CreatedAtUtc=7/21/2020 8:18:26 AM, UpdatedAtUtc=7/21/2020 8:18:38 AM

var request = ProofRequest: Name=ProveYourFirstName, Version=1.0, Nonce=1189684984146391381555794, RequestedAttributes=[ProveYourFirstName, Hyperledger.Aries.Features.PresentProof.ProofAttributeInfo], RequestedPredicates=, NonRevoked=

var proof = Hyperledger.Aries.Features.PresentProof.PartialProof

ProofsViewModel.cs

public class ProofsViewModel
{
    public IEnumerable<ProofRecord> Proofs { get; set; }

}

public class ProofsDetailViewModel
{
    public ProofRecord ProofRecord { get; set; }
    public ProofRequest ProofRequest { get; set; }
    public PartialProof PartialProof { get; set; }
}

0 个答案:

没有答案