1

基本的にコレクションであるが特定のタイプのコレクションであるビューを基本的に生成するMVCアプリケーションがあります。

IEnumerable<IType>

今私のURLにはこのようなものが含まれています

www.site/home/section/param?System.Linq.Enumerable%....。

セクションの後に何かを削除したい。

routeMapを試しましたが、system.linqなどを省略できませんでした。アイデアやヘルプをお願いします。

これが私の行動方法です

public ActionResult Whatever(IEnumerable<IType> whatever)
        {
            return View(whatever);
        }
4

2 に答える 2

0

URLでそのようなコレクションを渡すことはできませんRouteValueDictionary。リダイレクトするときに、それらをに追加しないでください。リダイレクト先のアクションで必要なものを取得するのに役立つ基本情報を送信するだけです。

編集:コードに基づいて、アクションメソッドがをとることがわかりますIEnumerable。したがって、このアクションを呼び出す場所はどこでも、それを渡します。それはできません。アクションメソッドでリストを生成する必要があります。次のようなものを試してください:

public ActionResult Whatever()
{
    List<IType> whatever = new List<IType>();

    //populate your list here, then we can return it

    return View(whatever);
}
于 2012-05-30T11:46:11.043 に答える
0

上記の質問は非常に興味深く、しばらく時間がかかり、以前に作成したmvcアプリに戻りました。答えは簡単ですが、明白ではありません。

そして、現在のmvc3では、ビューをビューモデルにマッピングする匿名タイプとしてオブジェクトを渡したとしても、それは常にコレクションタイプを計算し、この場合はURLにケース全体を追加しているように見えます。

http://www.website.com/param=system.linq.enumerable.where.select .。

とにかく正しい方法はそれをroutevaluedictionaryでラップすることです

new RouteValueDictionary(new {controller = Constants.HOMECONTROLLER、action = Constants.APPLYAPP}));

あるアクションから別のアクションに何かを渡す場合は、これを使用してください

return new RedirectToRouteResult(Constants.DEFAULTROUTE,
                     new RouteValueDictionary(new { controller = Constants.HOMECONTROLLER, action = Constants.APPLYAPP }));

RedirecttoActionの代わりに、上記のURLが表示されるようです。

MattyTommoの助けに感謝しますが、私の場合は関係ありませんが、他の人には役立つかもしれません。mattytommoの返信は、実際に私のリクエストを誤解していたため、回答としてマークすることはできません。おそらく、私のリクエストは正しくなかっただけでなく、私を誤った方向に導いてくれました。

于 2012-05-30T13:02:28.710 に答える