C# 捕获当前用户自定义字段并保存在数据库中
我正在使用一个自定义成员资格提供商。我试图捕获一个名为FirstName的自定义字段,它位于Users表中。我有另一个名为Pages的表,用于在我的应用程序中存储新创建的页面。我使用的是存储库模式,希望将当前用户的名字分配给用户创建的每个新页面 我已经创建了一个基本控制器,用于捕获当前用户的名字并作为ViewData输出。然后如何将ViewData内容传递到存储库并存储在数据库中 这是我的基地控制器:C# 捕获当前用户自定义字段并保存在数据库中,c#,asp.net-mvc,C#,Asp.net Mvc,我正在使用一个自定义成员资格提供商。我试图捕获一个名为FirstName的自定义字段,它位于Users表中。我有另一个名为Pages的表,用于在我的应用程序中存储新创建的页面。我使用的是存储库模式,希望将当前用户的名字分配给用户创建的每个新页面 我已经创建了一个基本控制器,用于捕获当前用户的名字并作为ViewData输出。然后如何将ViewData内容传递到存储库并存储在数据库中 这是我的基地控制器: public abstract class ApplicationController : C
public abstract class ApplicationController : Controller
{
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (User != null)
{
var db = new applicationContext();
var username = User.Identity.Name;
if (!string.IsNullOrEmpty(username))
{
var user = db.UserProfiles.SingleOrDefault(u => u.UserName == username);
string firstName = string.Concat(new string[] { user.FirstName });
ViewData.Add("FirstName", firstName);
}
}
base.OnActionExecuted(filterContext);
}
}
private applicationRepository repository = new applicationRepository();
public ActionResult Create(PageViewModel issue)
{
if (ModelState.IsValid)
{
page.PageId = repository.Page(page);
}
return Json(new[] { issue });
}
此控制器继承自ApplicationController:
public abstract class ApplicationController : Controller
{
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (User != null)
{
var db = new applicationContext();
var username = User.Identity.Name;
if (!string.IsNullOrEmpty(username))
{
var user = db.UserProfiles.SingleOrDefault(u => u.UserName == username);
string firstName = string.Concat(new string[] { user.FirstName });
ViewData.Add("FirstName", firstName);
}
}
base.OnActionExecuted(filterContext);
}
}
private applicationRepository repository = new applicationRepository();
public ActionResult Create(PageViewModel issue)
{
if (ModelState.IsValid)
{
page.PageId = repository.Page(page);
}
return Json(new[] { issue });
}
这是我的存储库模式:
private applicationContext db = new applicationContext();
public int CreatePage(PageViewModel viewModel)
{
var page = new Page();
viewModel.CopyToIssue(page);
db.Issues.Add(issue);
db.SaveChanges();
return issue.IssueId;
}
您可以创建一个基本viewmodel类,并在基本viewmodel上放置属性名。然后,在控制器中,可以将viewdata中的FirstName添加到viewmodel的FirstName属性中 或 不要使用viewdata,而是在基本控制器上为FirstName创建一个属性,然后将其复制到viewmodel上