Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 捕获当前用户自定义字段并保存在数据库中_C#_Asp.net Mvc - Fatal编程技术网

C# 捕获当前用户自定义字段并保存在数据库中

C# 捕获当前用户自定义字段并保存在数据库中,c#,asp.net-mvc,C#,Asp.net Mvc,我正在使用一个自定义成员资格提供商。我试图捕获一个名为FirstName的自定义字段,它位于Users表中。我有另一个名为Pages的表,用于在我的应用程序中存储新创建的页面。我使用的是存储库模式,希望将当前用户的名字分配给用户创建的每个新页面 我已经创建了一个基本控制器,用于捕获当前用户的名字并作为ViewData输出。然后如何将ViewData内容传递到存储库并存储在数据库中 这是我的基地控制器: public abstract class ApplicationController : C

我正在使用一个自定义成员资格提供商。我试图捕获一个名为FirstName的自定义字段,它位于Users表中。我有另一个名为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);
    }
}
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上