Asp.net 成功登录后显示用户详细信息
我正在编写一个asp.net mvc3项目,其中包含SQL Server 2012和EF包。我已将授权添加到此项目。它的创建用户成功,但在创建后,我希望它重定向到页面,显示所有关于学生的信息,但我不明白我是如何做到这一点。在我看来,它的所有用途都是这样的:Asp.net 成功登录后显示用户详细信息,asp.net,asp.net-mvc-3,razor,authorization,Asp.net,Asp.net Mvc 3,Razor,Authorization,我正在编写一个asp.net mvc3项目,其中包含SQL Server 2012和EF包。我已将授权添加到此项目。它的创建用户成功,但在创建后,我希望它重定向到页面,显示所有关于学生的信息,但我不明白我是如何做到这一点。在我看来,它的所有用途都是这样的: @User.Identity.Name 但这对我来说还不够。我试图发送id,但它返回了一个错误。这是我的密码: public ActionResult Register() { return View();
@User.Identity.Name
但这对我来说还不够。我试图发送id,但它返回了一个错误。这是我的密码:
public ActionResult Register()
{
return View();
}
[HttpPost]
public ActionResult Register(Student student)
{
Register(student.Username, student.Password, student.Email, true, student.FirstName, student.LastName);
return RedirectToAction("Index", "Membership", new {id == student.StudentId});
}
public static MembershipCreateStatus Register(string Username, string Password, string Email, bool IsApproved, string FirstName, string LastName) {
MembershipCreateStatus CreateStatus;
System.Web.Security.Membership.CreateUser(Username, Password, Email, null, null, IsApproved, null, out CreateStatus);
if (CreateStatus == MembershipCreateStatus.Success) {
using (UniversityContext Context = new UniversityContext(ConfigurationManager.ConnectionStrings[0].ConnectionString)) {
Student User = Context.Students.FirstOrDefault(Usr => Usr.Username == Username);
User.FirstName = FirstName;
User.LastName = LastName;
Context.SaveChanges();
}
if (IsApproved) {
FormsAuthentication.SetAuthCookie(Username, false);
}
}
return CreateStatus;
}
public ActionResult Index(int id)
{
var model = context.Students
.Include(x => x.Universities)
.Include(x => x.FieldStudies)
.Include(x => x.StudyModes)
.Include(x => x.StudentDegrees)
.Include(x => x.EntryMonths)
.Include(x => x.Genders)
.Include(x => x.EnglishLanguages)
.Include(x => x.RussianLanguages)
.Include(x => x.LatvianLanguages)
.Include(x => x.OtherLans)
.Include(x => x.OtherLanNexts)
.FirstOrDefault(x => x.StudentId == id);
return View(model);
}
视图是开箱即用的,由我的学生模型使用强类型视图创建/详细信息,有什么想法吗
编辑
我将在视图中添加下几行代码,但我认为这不是一个正确的解决方案
@model IEnumerable<Models.Entities.Student>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_SecondLayout.cshtml";
var name = @User.Identity.Name;
}
<h2>Index</h2>
Hello there @name
<fieldset>
<legend>Student</legend>
@foreach(var item in Model)
{
if (item.Username == name)
{
<div class="display-label">
@Html.DisplayNameFor(model => model.Username)
</div>
<div class="display-field">
@Html.DisplayFor(model => item.Username)
</div>
}
}
@model IEnumerable
@{
ViewBag.Title=“Index”;
Layout=“~/Views/Shared/_SecondLayout.cshtml”;
var name=@User.Identity.name;
}
指数
你好@name
学生
@foreach(模型中的var项目)
{
如果(item.Username==名称)
{
@DisplayNameFor(model=>model.Username)
@DisplayFor(model=>item.Username)
}
}
您的操作结果索引(int-id)
只返回一个对象或null(.FirstOrDefault(x=>x.StudentId==id);
),但您键入的视图是对象列表IEnumerable.
所以
1) 将顶级定义更改为@model Models.Entities.Student
2) 现在,您可以使用@Model
station访问所需的所有属性:
@Model.username
@Model.email
@Model.FirstName
@Model.SeconName
....