如何在ASP.NET MVC 4中为特定的授权用户显示特定的html元素

本文关键字:授权 显示 元素 html 用户 ASP NET MVC | 更新日期: 2023-09-27 17:58:29

我正在构建非常非常简单的社交网络,下面是我的问题:例如,我想在用户页面上只为拥有此配置文件的用户显示一个按钮"更改配置文件图片",并应为其他授权用户隐藏。有什么建议吗?

这是我的登录方法:

[HttpPost]
        public ActionResult Login(LoginModel user)
        {
            if (ModelState.IsValid)
            {
                if (IsValid(user.UserName, user.Password))
                {
                    FormsAuthentication.SetAuthCookie(user.UserName, false);
                    return RedirectToAction("About", "User", new{ username = user.UserName });
                }
                else
                {
                    ModelState.AddModelError("", "Login data is incorrect");
                }
            }
            return View(user);
        }
LoginModel:
    public class LoginModel
    {
        [Required]
        [DataType(DataType.Password)]
        [StringLength(20, MinimumLength = 6)]
        [Display(Name = "Password")]
        public string Password { get; set; }
        [Required]
        [DataType(DataType.Text)]
        [StringLength(100)]
        [Display(Name = "User name")]
        public string UserName { get; set; }
    }

用户配置文件的路径:

routes.MapRoute(
    name: "User",
    url: "{UserName}",
    defaults: new
    {
        controller = "User",
        action = "About",
        id = UrlParameter.Optional
    }); 

如何在ASP.NET MVC 4中为特定的授权用户显示特定的html元素

您可以简单地从控制器中的模型中设置一个变量,指示您想要显示html的特定部分。

样品:

在您的模型中添加一个属性:

public TestModel
{
    public bool ShowContentX {get;set;}
}

在控制器中,填充并将模型传递到视图:

TestModel t = new TestModel();
t.ShowContentX = true; // create check here.
return View(t);

在您的视图中,检查属性是否为true:

@if (@model.ShowContentX) {
  <p>add your html</p>
}

我会创建一个自定义的html助手,并使助手函数只在满足条件时返回输出。

在自定义助手中,检查用户是否处于角色或授权状态,然后从自定义html助手返回html,否则返回空字符串。

这里有一个例子:

http://blogs.technet.com/b/sateesh-arveti/archive/2013/09/06/custom-html-helper-methods-in-asp-net-mvc-4.aspx

看看这篇漂亮的文章:

http://www.codeproject.com/Articles/649394/ASP-NET-MVC-Custom-HTML-Helpers-Csharp

希望能有所帮助。