2016-12-19 2 views
2

Привет всем Я новичок в MVC/Razor, и я хочу просто показать год на странице просмотра.ASP.net MVC 5 ViewBag с использованием Razor

Код просмотра страницы:

<p>&copy; @Html.Raw(ViewBag.theDate) - Switchboard</p> 

И мой код контроллера:

public String getYear() 
{ 
    ViewBag.theDate = DateTime.Now.Year.ToString(); 

    return View(ViewBag.theDate); 
} 

При просмотре страницы в IE он просто печатает:

© - Электрощитовое

Как я могу назвать эту функцию контроллера из моего представления с помощью Razor?

+0

Все ответы являются твердые варианты ... (не то, что я хочу добавьте в замешательство, если вы все еще учитесь). Но если это что-то маленькое и что для повторного использования вы можете использовать «помощник». (Например, если у вас есть несколько видов, которым все это нужно, и вы не используете их на главной странице. Ключ «повторно использовать») https://www.asp.net/mvc/overview/older-versions -1/views/create-custom-html-helpers-cs ... снова просто посмотрите, что у вас есть, и оцените его оттуда. Пример: '<% = Helper.Copyright (" Switchboard ")%>' –

+1

Почему не просто '@ DateTime.Now.Year.ToString() - Switchboard' в представлении - вам не нужно' ViewBag' для этого –

ответ

4

Вам нужен метод контроллера, использовать ViewBag и возвратить представление

public ActionResult Index() 
{ 
    ViewBag.theDate = DateTime.Now.Year.ToString(); 
    return View(); 
} 

В Index.cshtml, просто используйте

<p>&copy; @ViewBag.theDate - Switchboard</p> 
+0

Как мне вызвать что-то из метода, отличного от Index()? – StealthRT

+0

шаблон MVC требует, чтобы вы использовали метод контроллера, чтобы вернуть представление. В этом методе вы можете вызвать другой метод из других служб. Ex 'ViewBag.theDate = DateHelper.getYear()' – FBO

1

Вам нужен контроллер ActionResult, который возвращает вид, как так:

public ActionResult MyView() 
{ 
    //ViewBag.ShowTheYear = DateTime.Now.Year.ToString(); 

    //You do not call a method from the view.. you do it in the controller.. 

    // Using your example 

    ViewBag.ShowTheYear = getYear(); 

    return View(); 
} 

getYear метод:

public String getYear() 
{ 
    return DateTime.Now.Year.ToString(); 
} 

Затем в MyView.cshtml

<p>&copy; @Html.Raw(ViewBag.ShowTheYear) - Switchboard</p> 

Позвольте мне знать, если это помогает!

+1

Это помогает. Благодаря BviLLe_Kid – StealthRT

1

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

ViewData["Year"] = DateTime.Now.Year.ToString(); // in controller/actionresult 

и с вашей точки зрения (Razor) просто написать:

@ViewData["Year"]