Как мне сгенерировать ActionLink из кода в Mvc? - PullRequest
0 голосов
/ 13 января 2012

Вкл. HomeController.cs код:

 if (User.Identity.IsAuthenticated)
            {
                var profile = Profile.GetProfile(User.Identity.Name);
                ViewData["Message"] = "Welcome " + profile.FirstName + "!";
            }
            else
            {
                ViewData["Message"] = "Welcome to myblog.";
                ViewData["RegisterLink"] = "please register <%:Html.ActionLink('Register', 'Register', 'Account')%>.";
            }

Если пользователь не вошел в систему, он должен показать добро пожаловать в myblog и зарегистрироваться (это должна быть ссылка);

и в индексе..aspx внутри Код содержимого:

  <%:  ViewData["RegisterLink"] %>

Но мне не удалось сгенерировать ActionLink, пожалуйста, помогите.

Ответы [ 3 ]

4 голосов
/ 13 января 2012

Есть много разных способов решить, что вы хотите, я предпочитаю подход со строго типизированным представлением, но вы можете попробовать следующее:

ViewData["RegisterLink"] = "true";

Тогда внутри вашего View, если RegisterLink истинно, покажите ActionLink ().

3 голосов
/ 13 января 2012

Я бы хотел не использовать ViewData и использовать строго типизированную ViewModel для этого.

Моя ViewModel будет такой

public class LoggedInUserViewModel : 
{

  public bool IsValid { set;get;}
  public string DisplayName { set;get;}

}

в контроллере, проверьте подлинность пользователя, установите свойства объекта ViewModel и передайте объект ViewModel в View

LoggedInUserViewModel objVM=new LoggedInUserViewModel();
if (User.Identity.IsAuthenticated)
{
   objVM.IsValid=true;
   objVm.DisplayName="Name from your user entity"

}
return View(objVm);

и в представлении

 @if(Model.IsValid) 
 {
   @Html.ActionLink("Register", "Register", "Users")
 }
 else
 {
  Welcome @Model.DisplayName
   @Html.ActionLink("Profile", "Profile", "Users")
 }
3 голосов
/ 13 января 2012

Это как сгенерировать якорь из кода

TagBuilder linkBuilder = new TagBuilder("a");
linkBuilder.MergeAttribute("href", Url.Action("Register", "Account"));
linkBuilder.SetInnerText("Please Register");
ViewData["RegisterLink"] = linkBuilder.ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...