1

学生のリストを取得してビューに表示するコントローラがあります。学生をリストに保存してからTempData変数に保存するコントローラアクションの下にあります。次に、別のアクションにリダイレクトして、リストをビューに表示します。

var StudentsList = (from s in data.vwStudents.Where(a => a.StudentID == Id)
                   group s by s.StudentName into g
                   select g.Key).ToList();

TempData["StudentsList"] = StudentsList;

return RedirectToAction("DisplayStudents");

TempData["StudentList"] 変数を別のコントローラー アクションに渡します。

    [HttpGet]
    public ActionResult DisplayStudents()
    {
        ViewData["StudentsList"] = TempData["StudentsList"];
        return View();
    }

ビューに学生を表示する方法は次のとおりです。

         <%= ViewData["StudentsList"]%> <br /><br />

問題は、学生を見ることができないことです。代わりに、次のように表示されます。

System.Collections.Generic.List`1[System.String] 

ビューに渡す前に、TempData をリストに変換する必要がありますか? またはビューでそれを行いますか?また、TempData変数をリストに変換するにはどうすればよいですか?

前もって感謝します

4

2 に答える 2

4

以下を使用してください:

string.Join(",",(List<string>)ViewData["StudentsList"])).ToArray());
于 2012-04-19T16:55:21.790 に答える
2

あなたが持っているのは名前のリストであり、単一の名前ではありません。モデルが単なる文字列の場合、エンジンはそれをそのままページにダンプして、適切と呼ぶことができます。しかし、そのようなものを配置する方法はいくつもあるので、リストをどうするかはわかりません。

何が必要かわかりません。コンマ区切りのリストですか?箇条書きの束?テーブル?エンジンはわからないので、あきらめて指示を求めます。

したがって、リストの表示方法をビューに指示する必要があります。それをどのように行うかはあなた次第ですが、例を挙げましょう。私はRazorエンジンに精通しているので、その構文でこれを試みます。

<ul>    
    @foreach (string name in (List<string>)ViewData["StudentsList"])
    {        
        <li>@name</li>        
    }    
</ul>

これにより、学生名の箇条書きリストが生成されます。別の形式にしたい場合は、ul/li構文の代わりにdivなどを使用してください。

于 2012-04-19T17:15:16.640 に答える