В чем идея с этим действием ссылки? Почему вы передаете пустые строки в качестве аргументов? Полагаю, вы хотите создать ссылки для входа, выхода из системы, не так ли?
Также, если вы хотите использовать помощники HTML внутри общих помощников, которые вы поместили в папку App_Code
, вам нужно будет передать их в качестве аргументов, потому что они недоступны:
@using System.Web.Mvc.Html
@helper DisplayUserControl(System.Web.Mvc.HtmlHelper html) {
if (html.ViewContext.HttpContext.User.Identity.IsAuthenticated) {
<span>
Welcome
<strong>
@html.ViewContext.HttpContext.User.Identity.Name
</strong>
!
</span>
<span>[@html.ActionLink("SignOut", "Login")]</span>
}
else {
<span>[@html.ActionLink("SignIn", "Login")]</span>
}
}
и вызвать помощника:
@LogOnUserControl.DisplayUserControl(Html)
Лично я никогда не использую таких помощников (те, которые вы положили в папку App_Code
). Не вижу никакой пользы для них, если у вас есть частичные представления, шаблоны редактора / отображения и помощники Html.Action.
Так, например, вы можете определить частичное (~/Views/Shared/_LogOnUserControl.cshtml
):
@if (User.IsAuthenticated) {
<span>
Welcome
<strong>
@User.Identity.Name
</strong>
!
</span>
<span>[@Html.ActionLink("SignOut", "Login")]</span>
}
else {
<span>[@Html.ActionLink("SignIn", "Login")]</span>
}
, который вы бы включили в свой макет:
@Html.Partial("_LogOnUserControl")