2013-02-18 6 views
0

Мне нужно отобразить сообщение в view от controller. Вот мой код;Показать текст с контроллера

VIEW

@Html.LabelFor // How do i write the rest to display the message 

CONTROLLER

public ActionResult Index(MyModel model) 
    { 

     // I Need to send a String to the Label in the View 

     return View(); 
} 
+0

Существует так много подходов, включая ViewBags и ViewData, но в шоке вы также можете использовать модель. Пожалуйста, сделайте добросовестную попытку самостоятельно. На этот вопрос можно ответить слишком легко –

ответ

1

Возможно, более элегантное решение, по меньшей мере, призванное использовать строго типизированный вид (с моделью - M в MVC). Простой пример может быть:

Модель:

public class MessageViewModel 
{ 
    public string Message {get; set;} 
} 

Контроллер:

public ActionResult Index() 
{ 
    var viewModel = new MessageViewModel {Message = "Hello from far away"}; 
    return View(viewModel); 
} 

Вид:

@model MyNamespace.MessageViewModel 

<h2>@Html.DisplayFor(model => model.Message)</h2> 

бы я беспокоить с этим для одного сообщения на страница? Удивительно, но большую часть времени я бы хотел. В представлении есть что-то элегантное, которое точно знает, чего ожидать (и наоборот), поддержку Intellisense и метод , где вы можете делать все виды неявного форматирования.


Это, как говорится, «простейший» (читай: быстро быстро и грязно, но получает некрасиво) решение будет набивать Ваше сообщение в ViewBag динамического объекта.

В контроллере:

ViewBag.MyMessage = "Hello from a far away place"; 

По мнению:

@ViewBag.MyMessage 

Но делая это, вы теряете Intellisense, повторяемостью (DRY), и, возможно, ваше здравомыслие. Одно свойство, используемое в одном месте, возможно (a laViewBag.Title, которое используется по умолчанию для страницы _Layout). Целая куча отключенных предметов, вложенных в сумку, нет, спасибо.

+0

Вы получите мой +1, если вы удалите первую часть своего ответа о 'ViewBag', заявив, что единственный правильный способ сделать это - использовать модель представления. –

+0

Спасибо! Я надеялся, что кто-то собирается упомянуть о создании модели. Это определенно предпочтительный способ. Кроме того, в вашем предыдущем редактировании у вас была модель строки и называлась 'return View (« Hello from far away. »);'. Это не сработало бы, так как перегрузка вида (string) использовала бы эту строку для поиска представления. Если вы хотите передать представление по умолчанию со строкой в ​​качестве модели, вам нужно будет указать параметр: 'return View (модель:« Hello from far away. »);'. – Joshua

+0

@ Joshua Вы совершенно правы, поэтому я сменил его, чтобы все упростилось. –

0

Вы можете использовать Viewbag или ViewData в контроллере

public ActionResult Index() 
    { 
     ViewData["listColors"] = colors; 
     ViewData["dateNow"] = DateTime.Now; 
     ViewData["name"] = "Hajan"; 
     ViewData["age"] = 25;; 

     ViewBag.ListColors = colors; //colors is List 
     ViewBag.DateNow = DateTime.Now; 
     ViewBag.Name = "Hajan"; 
     ViewBag.Age = 25; 
     return View(); 
    } 
<p> 
    My name is 
    <b><%: ViewData["name"] %></b>, 
    <b><%: ViewData["age"] %></b> years old. 
    <br />  
    I like the following colors: 
</p> 
<ul id="colors"> 
<% foreach (var color in ViewData["listColors"] as List<string>){ %> 
    <li> 
     <font color="<%: color %>"><%: color %></font> 
    </li> 
<% } %> 
</ul> 
<p> 
    <%: ViewData["dateNow"] %> 
</p> 
0
public ActionResult Index(MyModel model) 
{ 

     ViewBag.Message = "Hello World"; 

     return View(); 
} 

Ваше мнение

<h1>@ViewBag.Message</h1> 
Смежные вопросы