我正在使用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; }
}