私のチームは、学校のプロジェクトのコメント セクションの作成に取り組んでおり、部分的なビューでレンダリングしています。
これは私が思いついた解決策です:
インデックスページ:
@Html.Partial("StatusWall", new Project.Services.StatusServices())
ステータスウォール:
@model Project.Services.StatusServices
@foreach (var status in Model.GetAllUserStatuses())
{...
StatusService のコード:
public List<UserStatus> GetAllUserStatuses()
{
//check
var StatusResult = (from status in db.UserStatuses
orderby status.DateInserted descending
select status).ToList();
return StatusResult;
}
これは機能しますが、問題は、コントローラーをバイパスしているため、適切な MVC アーキテクチャを使用していないことです。プロジェクトの設計では部分ビューを使用する必要があるため、アシスタントが [ChildActionOnly] 属性を指摘するまで、コントローラーを呼び出す方法がわかりませんでした。
今、コードを MVC モデルに組み込もうとしていますが、これまでの解決策はわかりません。
ここに私がコントローラーに書いたものがあります:
[ChildActionOnly]
public ActionResult StatusWall() {
var service = new StatusServices();
var result = service.GetAllUserStatuses();
return PartialView(result);
}
インデックスページ:
@Html.Action("StatusWall")
他のすべてのコードは変更されていません。
これにより、次のエラーが発生します。
タイプ 'System.Web.HttpException' の例外が System.Web.dll で発生しましたが、ユーザー コードで処理されませんでした
追加情報: ハンドラー 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper' の子要求の実行中にエラーが発生しました。
誰かが私が間違っていることを説明できますか?