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

问题描述

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

代码

here is the code

页面

and the page

我什至试图将用户名保存在变量中,但这是发生了什么

通过表单传递的用户名

userName PassedBy Form

试图保存

trying to save it

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”,并且用户名在图片中为空,这是因为此代码行尚未执行。当您执行该代码并转到下一行代码时,可以看到用户名是“ saeed_01”。

如果要保存编辑后的用户。我想可以像这样在'qweb'中更改Save

UserRepository

并更改

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

_userRepositiory.Save();

更新

这是代码中的端点: enter image description here

您尝试将端点更改为此处: enter image description here

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

这是一个演示: 用户:

await _userRepositiory.Save(user);

动作:

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

结果: enter image description here