很遗憾,我正在处理C#Razor Web表单(非MVC)Web应用程序。
我获得了一个C#程序,其中包含一个异步函数类,我需要在cshtml页面上工作,我无法弄清楚如何...
下面的两个函数来自一个C#类,它与C#Forms应用程序配合得很好。 (请注意,“TextBox1”被分配了文本)。
我的问题是我需要在cshtml页面上显示字符串变量“xml”(最好是在“textarea”元素中),我似乎无法调用showData()函数来检索值
有人可以帮忙吗?
public static async void showData(string gID)
{
string xml = "";
try
{
xml = await WaitAsynchronouslyAsync(gID);
//The original code set a TEXTBOX to the string value
//I need to revise this code so that I can display it on a cshtml page
TextBox1.Text = xml;
}
catch (HttpRequestException)
{
throw new ApplicationException("Could not connect to the server");
}
}
public static async Task<string> WaitAsynchronouslyAsync(string gID)
{
await Task.Delay(10);
urlLink = "*** A custom Intranet URL ***";
....
....
** preparing a Token/Client response url **
....
....
string result = await serviceClient.GetStringAsync(urlLink);
return result;
}
我尝试绕过void
功能并访问Task<string>
功能,但我无法将Task<string>
转换为string
值。
答案 0 :(得分:0)
async void
is difficult to work with,然后even more so on ASP.NET。
我试图绕过void函数并访问Task函数
或者只需将async void showData
更改为async Task showData
- 只要您避开async void
,就可以到达同一个地方。
但我无法将任务转换为字符串值。
您使用await
执行此操作:
var xml = await WaitAsynchronouslyAsync(gID);
或:
await showData(gID);
您的通话功能需要标记为async
并返回Task
/ Task<T>
。是的,这确实会导致async
/ await
到&#34;成长&#34;通过你的代码库,是的,这既正常又必要。