如何在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
});
您可以简单地从控制器中的模型中设置一个变量,指示您想要显示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
希望能有所帮助。