ajax调用后,我的模型数据已清除。
我想从删除中保存所有ModelView数据。
function informationAboutUser(userId) {
$.ajax({
url: '?handler=UserInformation',
data: { userId: userId },
}).done(function (result) {
document.getElementById("UserView").innerHTML = result;
})
}
function banUser() {
$.ajax({
url: '?handler=Ban',
}).done(function (result) {
document.getElementById("BanView").innerHTML = result;
})
}
public class ViewModel : PageModel
{
private readonly NGSDbContext _context;
public ViewModel(NGSDbContext context)
{
_context = context;
}
public ICollection<NGSUser> Users { get; set; }
public bool IsThereError { get; set; }
public string UserId { get; set; }
public NGSUser UserInformation { get; set; }
[BindProperty]
public BanEntity Ban { get; set; }
[BindProperty]
public int Hour { get; set; }
[BindProperty]
public int Days { get; set; }
[Authorize(Roles = "SuperAdmin,Admin,Moderator")]
public async Task<IActionResult> OnGet()
{
Users = new List<NGSUser>();
Users =_context.Users.Where(e=>e.UserName!="Admin").ToList();
return Page();
}
[Authorize(Roles = "SuperAdmin,Admin,Moderator")]
public PartialViewResult OnGetUserInformation(string userId)
{
NGSUser userInformation = _context.Users.Include(i => i.BanHistory).Where(user => user.Id == userId).SingleOrDefault();
UserId = userId;
PartialViewResult pv = new PartialViewResult()
{
ViewName = "_ViewUserPartial",
};
if (userInformation == null)
{
pv.ViewName = "";
return pv;
}
else
{
UserInformation = new NGSUser();
UserInformation.DisplayName = userInformation.DisplayName;
UserInformation.IsBanned = userInformation.IsBanned;
UserInformation.IsMale = userInformation.IsMale;
UserInformation.BanHistory = userInformation.BanHistory;
UserInformation.LastLogin = userInformation.LastLogin;
UserInformation.Points = userInformation.Points;
UserInformation.RegisterDate = userInformation.RegisterDate;
UserInformation.UserName = userInformation.UserName;
UserInformation.Description = userInformation.Description == null || userInformation.Description.Trim() == null ? userInformation.Description : "Brak opisu";
pv.ViewData = new ViewDataDictionary<ViewModel>(ViewData, new ViewModel(_context) {UserInformation=this.UserInformation });
return pv;
}
}
[HttpPost]
[Authorize(Roles = "SuperAdmin,Admin,Moderator")]
public async Task<IActionResult> OnPostBan(IFormFile file)
{
if (ModelState.IsValid)
{
if (file != null && file.ContentType.Contains("image"))
{
using (MemoryStream ms = new MemoryStream())
{
file.CopyTo(ms);
Ban.Image = ms.GetBuffer();
}
}
await _context.AddAsync(Ban);
await _context.SaveChangesAsync();
IsThereError = false;
}
else
IsThereError = true;
Users = new List<NGSUser>();
Users = _context.Users.Where(e => e.UserName != "Admin").ToList();
return Page();
}
public PartialViewResult OnGetBan()
{
PartialViewResult pv = new PartialViewResult()
{
ViewName = "_BanUserPartial",
};
return pv;
}
}
}
调用ajax后,我的模型值将为空。 partialView使用与我调用ajax的主视图相同的模型。我不知道为什么在调用和渲染视图后我的模型数据清晰可见。这是因为就像创建新的Model对象一样吗?如果是,我如何将数据发送到当前模型,或者以其他方式呈现具有相同模型值的局部视图。