【发布时间】:2019-10-07 01:53:28
【问题描述】:
我需要从 mvc 应用程序调用第三方异步方法。此异步方法的名称是 ForceClient.QueryAsync。它来自一个开源项目:https://github.com/developerforce/Force.com-Toolkit-for-NET/。
以下工作正常,当进程处于 mvc 的 View 阶段时,model.Opportunity 包含预期的信息:
public async Task<ActionResult> MyController(string Id) {
. . . .
MyModel model = new MyModel();
var client = new ForceClient(instanceUrl, accessToken, apiVersion);
var qry = await client.QueryAsync<MyModel.SFOpportunity>(
"SELECT Name, StageName FROM Opportunity where Id='" + Id + "'");
model.Opportunity = qry.Records.FirstOrDefault();
. . . .
return View(viewName, myModel);
}
但下面不起作用。当流程处于 View 阶段时,model.Opportunity 为 null。我做了一些调试,发现流程是这样的:
1) 步骤1
2) 第二步
3) 在视图阶段。此时 model.Opportunity 为 null,我需要填充它。
4) 第三步。
public async Task<ActionResult> MyController(string Id) {
. . . .
MyModel myModel = await Task.Run(() =>
{
var result = new MyModel(Id);
return result;
}); // =====> Step 1
. . . .
return View(viewName, myInfoView);
}
public class MyModel
{
public SFOpportunity Opportunity { get; set; }
public MyModel(string id)
{
setOpportunityAsync(id);
}
private async void setOpportunityAsync(string id)
{
. . .
var client = new ForceClient(instanceUrl, accessToken, apiVersion);
var qry = await client.QueryAsync<MyModel.SFOpportunity>(
"SELECT Name, StageName FROM Opportunity where Id='" + id + "'"); // ======> Step2
Opportunity = qry.Records.FirstOrDefault(); // =====> step3
}
所以,我的问题是我需要做什么才能让它按以下顺序执行步骤: 1) 第一步
2) 第二步
3) 第三步
4) 在视图阶段。此时应该填充 model.Opportunity。
【问题讨论】:
-
我认为应该可以。您确定 select 语句返回结果吗?
标签: c#