2017-07-27 43 views
-1

因此,不幸的是我正在处理C#Razor Web表单(非MVC)Web应用程序。C#剃刀任务<string>异步不起作用

我得到了一类C#程序组成的,我需要做一个CSHTML页面上工作异步功能,我无法弄清楚如何...

两个函数下面是从C#类与C#Forms应用程序配合良好。 (请注意,“TextBox1”分配了文本)。

我的问题是我需要的字符串变量“XML”要显示的CSHTML页面(最好在“文本区域”元素)上,我似乎无法调用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

这是一个非常宽泛的问题。你打算怎么调用'showData'方法?您可以使用AJAX或其他操作调用它。您需要删除'TextBox1.Text',以便它可以重复使用。你需要提供更多的细节。 – CodingYoshi

+0

是的......我清楚地说明需要删除多个“TextBox1.Text”。问题是你不能调用'void'方法并检索一个字符串。所以不,用这个代码..我不能只使用AJAX。 – bagofmilk

+0

我很困惑你需要更多的细节。我只是试图从两个函数中检索字符串'xml'。在告诉我你需要更多细节之前,请完整阅读我的文章。 – bagofmilk

回答

0

async void is difficult to work with开始,和even more so on ASP.NET

我试图绕过无效的功能和访问任务功能

或者只是改变async void showDataasync Task showData - 只要你将你避免async void,你会得到相同的地方。

但我无法将任务转换为字符串值。

为此,您可以await

var xml = await WaitAsynchronouslyAsync(gID); 

或:

await showData(gID); 

您的通话功能需要被打上async并返回Task/Task<T>。是的,这确实会导致async/await“通过您的代码库”增长“,是的,这是正常的和必要的。