На мой взгляд, у вас есть два основных варианта:
Создание класса / структуры, содержащей требуемые данные, заполнение и добавление его в вашу viewbag / tempdata. Затем на странице просмотра вы можете привести объект к вашему классу.
Преобразовать анонимный объект в строку JSON, а затем преобразовать его обратно на страницу просмотра
Второй вариант, вероятно, самый простой способ сделать это. Просто добавьте using System.Web.Helpers
к контроллеру и установите TempData
следующим образом:
TempData["UserMessage"] = Json.Encode(new { CssClassName = "alert alert-success alert-dismissible", Title = "Success!", Message = "Operation Done." });
На вашей странице просмотра вы можете использовать следующее:
@if (TempData["UserMessage"] != null)
{
dynamic userMessage = Json.Decode(TempData["UserMessage"]);
<div class="@userMessage.CssClassName">
<strong>@userMessage.Title</strong> @userMessage.Message
</div>
}
Для Для полноты, вот как вы должны сделать первый вариант:
Создать структуру / класс:
public struct AlertMessage
{
public string CssClassName;
public string Title;
public string Message;
}
Затем в вашем контроллере установите ваши TempData следующим образом:
TempData["UserMessage"] = new AlertMessage() { CssClassName = "alert alert-success alert-dismissible", Title = "Success!", Message = "Operation Done." };
Затем на вашей странице просмотра вы можете привести ваш объект TempData обратно к вашему AlertMessage следующим образом:
@if (TempData["UserMessage"] != null)
{
AlertMessage userMessage = (TempData["UserMessage"] as AlertMessage);
<div class="@userMessage.CssClassName">
<strong>@userMessage.Title</strong> @userMessage.Message
</div>
}
Обратите внимание, что если вы делаете это, вы должны добавить @using
в верхней части вашего страница просмотра с пространством имен вашей структуры / класса.