为什么Ajax调用清晰的模型数据?

时间:2019-07-25 19:25:35

标签: c# ajax

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对象一样吗?如果是,我如何将数据发送到当前模型,或者以其他方式呈现具有相同模型值的局部视图。

0 个答案:

没有答案