我正在使用自定义会员提供商。我正在尝试捕获 Users 表中名为 FirstName 的自定义字段。我有另一个名为 Pages 的表,用于在我的应用程序中存储新创建的页面。我正在使用存储库模式,并希望将当前用户的名字分配给用户创建的每个新页面。
我创建了一个基本控制器,用于捕获当前用户的名字和输出为ViewData。然后,我如何将ViewData内容传递到存储库并将其存储在数据库中?
这是我的基本控制器:
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);
}
}
此控制器继承自ApplicationController:
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;
}
答案 0 :(得分:0)
您可以创建一个基本viewmodel类,并在基本viewModel上放置一个属性FirstName。然后,在控制器中,您可以将viewdata中的FirstName添加到viewmodel上的FirstName属性。
OR
而不是使用viewdata在您的基本控制器上为FirstName创建一个属性,然后将其复制到您的viewmodel