Asp.net core 为什么我只能更新用户';ASP.Net核心中的s数据是否具有标识?
我正在测试我的应用程序,我发现我只能更新单个用户的信息,而不能更新其他用户的信息,应用程序不会给我错误消息或任何东西,它只会重新加载页面,数据不会到达数据库数据,而对于单个用户,这不会发生Asp.net core 为什么我只能更新用户';ASP.Net核心中的s数据是否具有标识?,asp.net-core,identity,Asp.net Core,Identity,我正在测试我的应用程序,我发现我只能更新单个用户的信息,而不能更新其他用户的信息,应用程序不会给我错误消息或任何东西,它只会重新加载页面,数据不会到达数据库数据,而对于单个用户,这不会发生 using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.Rendering;
using System;
using System.ComponentModel.DataAnnotations;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using UniJobs.Data;
using UniJobs.Models;
namespace UniJobs.Areas.Identity.Pages.Account.Manage
{
public partial class IndexModel : PageModel
{
private readonly UserManager<Usuarios> _userManager;
private readonly SignInManager<Usuarios> _signInManager;
private readonly ApplicationDbContext _context;
private readonly IWebHostEnvironment _webHostEnvironment;
public IndexModel(
UserManager<Usuarios> userManager,
SignInManager<Usuarios> signInManager,
ApplicationDbContext context,
IWebHostEnvironment webHostEnvironment)
{
_userManager = userManager;
_signInManager = signInManager;
this._context = context;
this._webHostEnvironment = webHostEnvironment;
}
public string Username { get; set; }
[TempData]
public string StatusMessage { get; set; }
[BindProperty]
public InputModel Input { get; set; }
public class InputModel
{
[Display(Name = "Imagen de perfil")]
public IFormFile InputImagen { get; set; }
[Display(Name = "¿Quién Soy?")]
public string QuienSoy { get; set; }
[Display(Name = "Sobre mis habilidades")]
public string SobreHabilidades { get; set; }
[Display(Name = "Sobre mis aptitudes")]
public string SobreAptitudes { get; set; }
[Required]
[DataType(DataType.Text)]
[Display(Name = "Nombre")]
public string FirstName { get; set; }
[Display(Name = "Provincia")]
public int? Provincia { get; set; }
[Display(Name = "Mi universidad")]
public int? MiUni { get; set; }
[Required]
[DataType(DataType.Text)]
[Display(Name = "Apellido")]
public string LastName { get; set; }
[DataType(DataType.Date)]
[Display(Name = "Fecha de nacimiento")]
public DateTime? BirthDate { get; set; }
[Phone]
[Display(Name = "Phone number")]
public string PhoneNumber { get; set; }
}
private async Task LoadAsync(Usuarios user)
{
var userName = await _userManager.GetUserNameAsync(user);
var phoneNumber = await _userManager.GetPhoneNumberAsync(user);
user.ID_Uni = _context.ListaEstudiantesUniversidades.Where(U => U.FK_UsuarioID == user.Id)
.Select(U => U.FK_UniversidadID).FirstOrDefault();
Username = userName;
Input = new InputModel
{
FirstName = user.FirstName,
LastName = user.LastName,
BirthDate = user.BirthDate,
Provincia = user.FK_ProvinciaID,
PhoneNumber = phoneNumber,
MiUni = user.ID_Uni,
QuienSoy = user.QuienSoy,
SobreHabilidades = user.SobreHabilidades,
SobreAptitudes = user.SobreAptitudes
};
}
public async Task<IActionResult> OnGetAsync()
{
ViewData["FK_ProvinciaID"] = new SelectList(_context.Provincias, "ProvinciasID", "Provincia");
ViewData["Universidad"] = new SelectList(_context.Universidades, "UniversidadesID", "NombreUniversidad");
var user = await _userManager.GetUserAsync(User);
if (user == null)
{
return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
}
await LoadAsync(user);
return Page();
}
public async Task<IActionResult> OnPostAsync()
{
var user = await _userManager.GetUserAsync(User);
if (user == null)
{
return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
}
if (!ModelState.IsValid)
{
await LoadAsync(user);
return Page();
}
var phoneNumber = await _userManager.GetPhoneNumberAsync(user);
if (Input.PhoneNumber != phoneNumber)
{
var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, Input.PhoneNumber);
if (!setPhoneResult.Succeeded)
{
StatusMessage = "Unexpected error when trying to set phone number.";
return RedirectToPage();
}
}
if (Input.InputImagen != null)
{
//Save image to wwwroot/image
string wwwRootPath = _webHostEnvironment.WebRootPath;
string ImageName = Path.GetFileNameWithoutExtension(Input.InputImagen.FileName);
string ExtensionImage = Path.GetExtension(Input.InputImagen.FileName);
user.ProfileImage = ImageName = ImageName + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ExtensionImage;
string path = Path.Combine(wwwRootPath + "/UsersImages/Users/", ImageName);
using (var fileStream = new FileStream(path, FileMode.Create))
{
await Input.InputImagen.CopyToAsync(fileStream);
}
//Insert record
}
if (Input.MiUni != _context.ListaEstudiantesUniversidades.Where(U => U.FK_UsuarioID == user.Id)
.Select(U => U.FK_UniversidadID).FirstOrDefault())
{
var UniID = _context.ListaEstudiantesUniversidades.Where(U => U.FK_UsuarioID == user.Id)
.Select(U => U.ListaEstudiantesUniversidadesID).FirstOrDefault();
var StudentUni = await _context.ListaEstudiantesUniversidades.FindAsync(UniID);
_context.ListaEstudiantesUniversidades.Remove(StudentUni);
await _context.SaveChangesAsync();
var Uni = _context.ListaEstudiantesUniversidades.Add(new ListaEstudiantesUniversidades
{
FK_UniversidadID = Input.MiUni.Value,
FK_UsuarioID = user.Id
});
await _context.SaveChangesAsync();
}
if (Input.FirstName != user.FirstName)
{
user.FirstName = Input.FirstName;
}
if (Input.LastName != user.LastName)
{
user.LastName = Input.LastName;
}
if (Input.BirthDate != user.BirthDate)
{
user.BirthDate = Input.BirthDate;
}
if (Input.Provincia != user.FK_ProvinciaID)
{
user.FK_ProvinciaID = Input.Provincia;
}
if (Input.QuienSoy != user.QuienSoy)
{
user.QuienSoy = Input.QuienSoy;
}
if (Input.SobreHabilidades != user.SobreHabilidades)
{
user.SobreHabilidades = Input.SobreHabilidades;
}
if (Input.SobreAptitudes != user.SobreAptitudes)
{
user.SobreAptitudes = Input.SobreAptitudes;
}
await _userManager.UpdateAsync(user);
await _signInManager.RefreshSignInAsync(user);
StatusMessage = "Your profile has been updated";
return RedirectToPage();
}
}
}
使用Microsoft.AspNetCore.Hosting;
使用Microsoft.AspNetCore.Http;
使用Microsoft.AspNetCore.Identity;
使用Microsoft.AspNetCore.Mvc;
使用Microsoft.AspNetCore.Mvc.RazorPages;
使用Microsoft.AspNetCore.Mvc.Rendering;
使用制度;
使用System.ComponentModel.DataAnnotations;
使用System.IO;
使用System.Linq;
使用System.Threading.Tasks;
使用UniJobs.Data;
使用UniJobs.Models;
命名空间UniJobs.Areas.Identity.Pages.Account.Manage
{
公共部分类索引模型:PageModel
{
私有只读用户管理器_UserManager;
专用只读签名管理器\u签名管理器;
私有只读应用程序的bContext\u上下文;
私人只读IWebHostEnvironment\u webHostEnvironment;
公共索引模型(
用户管理器用户管理器,
SignInManager SignInManager,
ApplicationDbContext上下文,
IWebHostEnvironment网站HostEnvironment)
{
_userManager=userManager;
_signInManager=signInManager;
这._context=context;
这。_webHostEnvironment=webHostEnvironment;
}
公共字符串用户名{get;set;}
[临时数据]
公共字符串状态消息{get;set;}
[BindProperty]
公共输入模型输入{get;set;}
公共类输入模型
{
[显示(Name=“Imagen de perfil”)]
公共文件InputImagen{get;set;}
[显示(Name=“?Quién Soy?”)]
公共字符串QuienSoy{get;set;}
[显示(Name=“Sobre mis habilidades”)]
公共字符串SobreHabilidades{get;set;}
[显示(Name=“Sobre错误资质”)]
公共字符串SOBReaptions{get;set;}
[必需]
[数据类型(DataType.Text)]
[显示(Name=“Nombre”)]
公共字符串名{get;set;}
[显示(Name=“Provincia”)]
公共int?Provincia{get;set;}
[显示(Name=“Mi universidad”)]
公共int?MiUni{get;set;}
[必需]
[数据类型(DataType.Text)]
[显示(Name=“Apellido”)]
公共字符串LastName{get;set;}
[数据类型(DataType.Date)]
[显示(Name=“Fecha de nacimiento”)]
公共日期时间?生日{get;set;}
[电话]
[显示(Name=“电话号码”)]
公共字符串PhoneNumber{get;set;}
}
专用异步任务LoadAsync(Usuarios用户)
{
var userName=await\u userManager.GetUserNameAsync(用户);
var phoneNumber=await\u userManager.GetPhoneNumberAsync(用户);
user.ID\U Uni=\U context.listaestudiantesunidades.Where(U=>U.FK\U UsuarioID==user.ID)
.选择(U=>U.FK_Universidad).FirstOrDefault();
用户名=用户名;
输入=新输入模型
{
FirstName=user.FirstName,
LastName=user.LastName,
BirthDate=user.BirthDate,
Provincia=user.FK_ProvinciaID,
PhoneNumber=电话号码,
MiUni=user.ID\u Uni,
QuienSoy=user.QuienSoy,
SobreHabilidades=user.SobreHabilidades,
SOBReaptions=用户。SOBReaptions
};
}
公共异步任务OnGetAsync()
{
ViewData[“FK_ProvinciaID”]=新的选择列表(_context.Provincias,“ProvinciasID”,“Provincia”);
ViewData[“Universidad”]=新的选择列表(_context.Universidades,“UniversidadesID”,“NombreUniversidad”);
var user=await\u userManager.GetUserAsync(用户);
if(user==null)
{
返回NotFound($“无法加载ID为“{{u userManager.GetUserId(user)}”的用户”);
}
等待加载异步(用户);
返回页();
}
公共异步任务OnPostAsync()
{
var user=await\u userManager.GetUserAsync(用户);
if(user==null)
{
返回NotFound($“无法加载ID为“{{u userManager.GetUserId(user)}”的用户”);
}
如果(!ModelState.IsValid)
{
等待加载异步(用户);
返回页();
}
var phoneNumber=await\u userManager.GetPhoneNumberAsync(用户);
if(Input.PhoneNumber!=PhoneNumber)
{
var setPhoneResult=wait_userManager.SetPhoneNumberAsync(用户,输入.PhoneNumber);
如果(!setPhoneResult.successed)
{
StatusMessage=“尝试设置电话号码时出现意外错误。”;
返回重定向Topage();
}
}
if(Input.InputImagen!=null)
{
//将图像保存到wwwroot/image
字符串wwwRootPath=\u webHostEnvironment.WebRootPath;
字符串ImageName=Path.GetFileNameWithoutExtension(Input.InputImagen.FileName);
string ExtensionImage=Path.GetExtension(Input.InputImagen.FileName);
user.ProfileImage=ImageName=ImageName+DateTime.Now.ToString(“yyyymmddhhmmssff”)+ExtensionImage;
string path=path.Combine(wwwRootPath+“/UsersImages/Users/”,ImageName);
使用(var fileStream=newfilestream(路径,FileMode.Create))
{
等待Input.InputImagen.CopyToAsync(fileStream);
}
//插入记录
}
if(Input.MiUni!=\U context.listaestudiantesunidades.Where(U=>U.FK\U UsuarioID==user.Id)
.Select(U=>U.FK_universidad).FirstOrDefault()
{
var UniID=\U context.listaestudiantesunidades.Where(U=>U.FK\U UsuarioID==user.Id)
.选择(U=>U.ListAEstudiantesUniversidadeId).FirstOrDefault();