-2
私はそれを示してProductViewModelコンストラクタを呼び出しています上記のコードでは、MVC 4非同期MVCでのViewModelを呼び出すためにどのように4
public async Task<ActionResult> Index(bool MyList, int Verified, string searchText)
{
ProductViewModel pvm =await new ProductViewModel(MyList, Verified, searchText);
return View(pvm);
}
で非同期アクションを作成しようとしています
を待つことができませんこの後ProductViewModel
私は私のコンストラクタ非同期を作ってみましたが、コンストラクタはエラーを示し、
次のようにこの非同期メソッドは '待つ' 演算子
を欠い私は、事前に
public class ProductListViewModel
{
public MyEntities _context;
public bool _verified;
public async Task<ProductViewModel> ProductViewModel(bool MyList, int Verified, string searchText)
{
_context = new MyEntities();
this.search = searchText;
this.SelectedListType = MyList;
this._verified= Verified;
}
public int SelectedListType { get; set; }
public IEnumerable<SelectListItem> VerifiedTypeList
{
get
{
List<ListTypeViewModel> ltvm = new List<ListTypeViewModel>();
ltvm.Add(new ListTypeViewModel(1,"Verified"));
ltvm.Add(new ListTypeViewModel(0,"Pending"));
var allVerifiedType = ltvm.Select(c => new SelectListItem
{
Value = c.ListValue.ToString(),
Text = c.ListText
});
return DefaultVerifiedTypeList.Concat(allVerifiedType);
}
}
public IEnumerable<SelectListItem> DefaultVerifiedTypeList
{
get
{
return Enumerable.Repeat(new SelectListItem
{
Value = "-1",
Text = "All"
}, count: 1);
}
}
public List<ProductViewmodel> ProductList
{
get
{
List<ProductViewmodel> pdvmList = new List<ProductViewmodel>();
foreach (var pm in _context.GetProductList(SelectedListType, _verified, search).ToList())
{
try
{
ProductViewmodel pdvm = new ProductViewmodel();
pdvm.Price = pm.Price;
pdvm.ProductID = pm.ProductID;
pdvm.ProductName = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(pm.ProductName.ToLower());
pdvm.IsVerified = pm.Verified;
pdvmList.Add(pdvm);
}
catch (Exception error)
{
Console.WriteLine(error.Message);
}
}
return pdvmList;
}
}
}
感謝をProductViewModelを作成しました。
1 - あなたは、そのアクションが非同期する必要があるのはなぜ?そのアクションでスレッドのブロック操作が実行されていますか? 2 - 個人的な意見かもしれませんが、そのビューモデルはあまりにも多くの責任を持っています。もし私が間違っていなければ、EFコンテキストとヒットデータベースも使用しています。 – Developer
はい、あなたは正しいです、実際に私のアクションは、Webページを読み込むには時間がかかりすぎています。 –
MVCかどうかは、コンストラクターを非同期にすることはできません。詳細は、重複したマークを参照してください。 –