0

私のコード:

public class MyCustomGridActionResultFactory : IGridActionResultFactory
{
    public System.Web.Mvc.ActionResult Create(object model)
    {
        ResultCache.AdvanceSearchGridResult = model as List<Models.Search.SearchGridModel>;

        //return a custom JSON result which have json serializer set to int.MaxValue
        return new CustomJsonResult
        {
            Data = model
        };
    }
}

結果キャッシュコード:

public static class ResultCache
{
    public static List<Models.Search.SearchGridModel> AdvanceSearchGridResult
    {
        get { return System.Web.HttpContext.Current.Session["AdvanceSearchGridResult"] as List<Models.Search.SearchGridModel>; }
        set { System.Web.HttpContext.Current.Session["AdvanceSearchGridResult"] = value; }
    }
}

****

戻り値としてのモデルList<Models.Search.SearchGridModel>NULL値

ResultCache.AdvanceSearchGridResult = model;「オブジェクトからリストに変換できません」というエラーメッセージが表示されます

**。これを解決する方法。ありがとう。

4

1 に答える 1

0

モデルのランタイム タイプは何ですか? 「as」が null を返す理由は 2 つあります。左辺が null であるか、または右辺の型ではありません。

したがって、 null を Create に渡すか、別のタイプのオブジェクトを渡します。デバッグして、どれを見つけるか

編集

コメントから、それはオプション2のようです。投稿されたランタイム情報がモデルのタイプである場合、それはリストではありません。「List<...>」を「IEnumerable<...>」に変更してみてください

public static IEnumerable<Models.Search.SearchGridModel> AdvanceSearchGridResult {
        get { return (IEnumerable<Models.Search.SearchGridModel>)HttpContext.Current.Session["AdvanceSearchGridResult"]; }
        set { HttpContext.Current.Session["AdvanceSearchGridResult"] = value; }
}
于 2012-10-25T06:11:55.780 に答える