0

私のチームは、学校のプロジェクトのコメント セクションの作成に取り組んでおり、部分的なビューでレンダリングしています。

これは私が思いついた解決策です:

インデックスページ:

@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' の子要求の実行中にエラーが発生しました。

誰かが私が間違っていることを説明できますか?

4

1 に答える 1

2

何が悪いのか理解しました。

私が変更され...

@model Project.Services.StatusServices

@foreach (var status in Model.GetAllUserStatuses())
{...

...の中へ...

@model List<Project.Models.UserStatus>

@foreach (var status in Model)
{...

また、ActionResult を PartialViewResult に変更するなどのマイナーな修正もありましたが、コードが機能するために必要かどうかはわかりません。

于 2015-05-11T15:57:04.460 に答える