2015-01-28 4 views
0
ViewBag.htmml = "<li>" + "Html.ActionLink(" + "Home" + ", " + "Dashboard" + ", " + "User" + ")" + "</li>"; 

Выше мой код, с помощью которого я пытаюсь сделать ActioLink на мой взгляд. Когда код запускается, используя следующий код, я не получаю actionlink с именем Home, вместо этого я получаю Html.ActionLink(Home, Dashboard, User) в моей части <li>. Как получить ActionLink с тем, что я пытаюсь.как визуализировать actionlink для просмотра формы контроллер

@Html.Raw(ViewBag.htmml) 
+0

Почему вы делаете это в контроллере, а не в представлении (код бритвы разобран в представлении)? –

+0

@ StephenMuecke: Привет, Стивен снова, пожалуйста, обратитесь к моей ссылке. http://stackoverflow.com/questions/28186208/rendering-html-code-in-view-which-is-generated-in-controller-of-asp-nt-mvc. Я пытаюсь создать меню из базы данных. – user2998990

+0

Я не понимаю другого вопроса: :). Ваш код бритвы должен быть в представлении. Что в базе данных определяет, что вы хотите отобразить? –

ответ

0

Как отметил @Stephen Muecke, HTML должен быть сгенерирован в представлении, а не в контроллере.

Однако, если вы настаиваете на его создании в контроллере, вам необходимо иметь HtmlHelper, чтобы вы могли вызвать метод ActionLink. Но, как следует из названия, HtmlHelper доступен только автоматически для вас в представлении.

может создать его самостоятельно (используя решение от this answer, например), но это очень неэффективно и подвержено ошибкам.

Но, так как вы только пытаетесь сформировать <a> элемент, и вы уже создаете элементы самостоятельно (например, в <li> элементе), вы можете просто сделать это (с помощью UrlHelper что является доступен в контроллере а также):

ViewBag.htmml = "<li><a href=\"" + 
       Url.Action("Dashboard", "User") + 
       "\">Home</a></li>";