像下面定義的模型(無屬性,但只有一個方法):無法在視圖中顯示的結果
namespace PartyInvitesInProASPNETMVC5.Models
{
public class MyAsyncMethods
{
public static Task<long?> GetPageLength()
{
HttpClient client = new HttpClient();
var httpTask = client.GetAsync("http://www.google.com");
return httpTask.ContinueWith((Task<HttpResponseMessage> antecedent) => {
return antecedent.Result.Content.Headers.ContentLength;
});
}
}
}
書面控制器的操作方法如下圖所示:
public ActionResult GooglePageLength()
{
var content = MyAsyncMethods.GetPageLength();
return View(content);
}
我並不瞭解如何爲上述操作方法生成視圖。從默認生成的視圖中修改下面的代碼。但是,仍然會出現錯誤。
@model PartyInvitesInProASPNETMVC5.Models.MyAsyncMethods.GetPageLength()
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Google Page Length</title>
</head>
<body>
<div>@Convert.ToInt32(@Model)@*How to write code here?*@
</div>
</body>
</html>
下面是我得到的錯誤:
傳遞到字典的模型項的類型爲「System.Threading.Tasks.ContinuationResultTaskFromResultTask 2[System.Net.Http.HttpResponseMessage,System.Nullable
1 [System.Int64]」,但這個字典需要一個'System.Nullable`1 [System.Int32]'類型的模型項。
您傳遞了一個longof型的模型,因此它必須是@model long?'。您所顯示的代碼無法生成該錯誤 - 但會生成_Compilation Error_,因爲「@ model」聲明不能是一種方法。你需要顯示你的真實代碼。 –
@Stephen:對不起,遲到回覆。相信我,它是真實的代碼。 –
不是因爲如果你真的在模型聲明中有一個方法會引發不同的異常。 –