C# 使用Identity2编辑用户信息

C# 使用Identity2编辑用户信息,c#,asp.net-mvc,entity-framework,asp.net-identity,owin,C#,Asp.net Mvc,Entity Framework,Asp.net Identity,Owin,我遇到了一个小问题,比如使用实体框架编辑模型属性 1) 那么,让我们开始吧-我想编辑属性“PacientInfo” 2) 我添加了一些基本逻辑来编辑此属性: GET+POST方法 [HttpGet] public ActionResult EditPacientInfo(string email) { var UserManager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserMa

我遇到了一个小问题,比如使用实体框架编辑模型属性

1) 那么,让我们开始吧-我想编辑属性“PacientInfo”

2) 我添加了一些基本逻辑来编辑此属性: GET+POST方法

[HttpGet]
    public ActionResult EditPacientInfo(string email)
    {
        var UserManager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
        ApplicationUser appUser = new ApplicationUser();
        appUser = UserManager.FindByEmail(email);
        PacientEdit user = new PacientEdit()
        {
            Email = appUser.Email,
            PacientInfo = appUser.PacientInfo
        };
        if (email== null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        ApplicationUser pacient = db.Users.Find(email);

        if (pacient == null)
        {
            return HttpNotFound();
        }
        return View(pacient);
    }
 [HttpPost]
    public ActionResult EditPacientInfo(ApplicationUser model)
    {

        var UserManager = HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
        if (ModelState.IsValid)
        {
            ApplicationUser u = UserManager.FindById(model.Id);
            u.Email = model.Email;
            u.PacientInfo= model.PacientInfo; // Extra Property
            UserManager.Update(u);
            return RedirectToAction("Index");
        }
        return View(model);
    }
[HttpGet]
公共操作结果EditPacientInfo(字符串电子邮件)
{
var UserManager=HttpContext.GetOwinContext().GetUserManager();
ApplicationUser appUser=新的ApplicationUser();
appUser=UserManager.FindByEmail(电子邮件);
PacientEdit用户=新建PacientEdit()
{
Email=appUser.Email,
PacientInfo=appUser.PacientInfo
};
如果(电子邮件==null)
{
返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
ApplicationUser pacient=db.Users.Find(电子邮件);
if(pacient==null)
{
返回HttpNotFound();
}
返回视图(pacient);
}
[HttpPost]
公共操作结果EditPacientInfo(应用程序用户模型)
{
var UserManager=HttpContext.GetOwinContext().GetUserManager();
if(ModelState.IsValid)
{
ApplicationUser u=UserManager.FindById(model.Id);
u、 Email=model.Email;
u、 PacientInfo=model.PacientInfo;//额外属性
UserManager.Update(u);
返回操作(“索引”);
}
返回视图(模型);
}
3) 并试图自定义我的“EditInfoMethod”的视图:

@model med\u projec\u roles\u added.Models.RegisterViewModel
@{
ViewBag.Title=“EditPacientInfo”;
}
@模型医疗项目角色添加了.Models.ApplicationUser
Pacient,@Model.Email
@使用(Html.BeginForm())
{
@LabelFor(model=>model.PacientInfo,新的{@class=“controllabel col-md-2”})
@EditorFor(model=>model.PacientInfo)
@Html.ValidationMessageFor(model=>model.PacientInfo)
}
4) 现在主要的问题是:我在地址栏中写入了应该通过get方法获得的地址,但我一直捕捉到这个异常:

5) 如果您可以在“我的数据库”中看到-此电子邮件已创建并应存在:

6) 总而言之,我尝试了不同的方法来正确更改“EditPacientInfo”,但我无法通过互联网做出或找到正确的决定。
如果你能找到/写一些能在这种情况下真正帮助我的东西,我会很高兴(感谢你们大家(也很抱歉英语不太好^^^))

我认为在浏览器中输入的
URL
格式不正确。请尝试以下URL:

localhost:1290/Doctor/EditPacientInfo?email=test@pacient@gmail.com

我认为在浏览器中输入的
URL
格式不正确。请尝试以下URL:

localhost:1290/Doctor/EditPacientInfo?email=test@pacient@gmail.com

您可以尝试以下几点:1)在HttpGet操作中,将
string email
更改为
string id
2)添加[FromRoute],如
public ActionResult EditPacientInfo([FromRoute]string email)
3)对您的电子邮件进行编码:aaa@bbb.com致aaa%40bbb.com.br问候。谢谢,很多人,我发现了一些有用的答案,帮助我解决了这个问题:-如果你对Identity 2数据库有问题->这将解决自动搭建的问题一些东西供你尝试:1)在HttpGet操作中,将
string email
更改为
string id
2)添加[FromRoute]如
public ActionResult EditPacientInfo([FromRoute]字符串电子邮件)
3)对您的电子邮件进行编码:aaa@bbb.com致aaa%40bbb.com.br问候。谢谢,很多人。我找到了一些有用的答案,帮助我解决了这个问题:-如果您对Identity 2数据库有问题->这将解决自动脚手架的问题
localhost:1290/Doctor/EditPacientInfo?email=test@pacient@gmail.com