25

文字列に基づいて ViewBag の動的プロパティを作成して使用する方法はありますか?

何かのようなもの

ViewBag.CreateProperty("MyProperty");
ViewBag.Property("MyProperty") = "Myvalue";

ありがとうございました

4

2 に答える 2

52

ViewDataを使用してViewBagのそのようなプロパティを作成できることがわかりました

したがって、プロパティCityErrorMessageを作成するには、使用する必要があります

ViewData.Add("CityErrorMessage", MyErrorMessage)

そして、ビューで私は使用することができます

@ViewBag.CityErrorMessage

編集:

リストに検証エラーのあるフィールドの名前を受け取ったため、ViewBagのプロパティを動的に作成しました

したがって、コードは実際には

foreach (ValidationError err in ValidationErrors)
{
    ViewData.Add(
        string.format("{0}ErrorMsg", err.PropertyName),
        err.ValidationErrorMessage);
}
于 2011-10-29T00:31:45.850 に答える
-3

更新: このコードは Nancy プロジェクトからのものであり、Nancy は独自の ViewBag を実装しているため、このコードは .Net MVC3 では機能せず、質問に答えないことに遅ればせながら気付きました。ただし、ナンシーに切り替えることで問題を解決できる可能性があると主張されるかもしれません.

ViewBag にはAddメソッドがあることがわかったので、これを行うことができます:

foreach(var row in model)
            {
                ViewBag.Add(row.resourceName, row.content);
            }
于 2016-05-17T15:05:24.977 に答える