无法在 Razor 页面中的表单传递的 OnPost 上保存或使用绑定模型数据

Cannot Save or Use Binding Model Data on OnPost Passed By Form in Razor Page

我在 razor 页面的 EditUserProfile 中有问题,所以在页面中显示用户信息没有问题,但是当我按下编辑按钮时,我通过表单获取用户信息但我无法保存或用户它。

代码

本页

我什至尝试将用户名保存在变量中,但结果如下

通过表单传递的用户名

正在努力保存

userRepository

方法中的 _User 和 var user 可能指向内存中的同一个对象。我不能确定,因为并非所有代码都是可见的。

这完全取决于userRepository中的代码。您使用的 ORM 可能有某种缓存,这可能会导致一些奇怪的行为。

在 OnGet 方法中克隆用户,从 GetUserByUserId 到 _User 属性。

public void OnGet()
{
   var user = _userRepositiory.GetUserByUserName(HttpContext.User.GetUserId());
    _User = new User(){
        // set all properties here
    };
}

首先,你的_User.UserName="saeed_01",你的图片中username为null,这是因为这行代码还没有执行。当你执行的时候去下一行代码,可以看到用户名是“saeed_01”。

如果您想保存已编辑的 user.I,您可以像这样在 UserRepository 中更改 Save

public async Task Save(User user)
        {
            try
            {
                _context.Update(user);
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                throw;
            }
        }

并改变

_userRepositiory.Save();

await _userRepositiory.Save(user);

更新:

这是您代码中的端点:

您尝试将端点更改为此处:

然后可以看到用户名不为空

这是一个演示: 用户:

 public class User {
        public int UserId { get; set; }
        public string UserName { get; set; }
    }

操作:

public IActionResult Index()
        {
            User _User = new User { UserId = 1, UserName = "sss" };
            var username = _User.UserName;
            return View();
        }

结果: