从多个DropDownList返回正在工作但未在页面中刷新



我有一个剃刀页面,其中包含一个for循环,该循环迭代用户对象列表。

循环的每个重复都包含一个下拉列表:-

<button type="submit" asp-page-handler="SetUserStatuses">Update Statuses</button>
@for (int i = 0; i < Model.UserList.Count; i++)
{
@Model.UserList[i].UserAccountStatusId
@Html.DropDownList("UserAccountStatusId", new SelectList(Enum.GetValues(typeof(UserAccountStatus)).Cast<UserAccountStatus>().Select
(v => new SelectListItem
{
Text = v.GetDescription(),
Value = (Convert.ToInt32(v)).ToString()
}), "Value", "Text", Model.UserList[i].UserAccountStatusId))
@Html.Hidden("UserId", Model.UserList[i].UserId)

页面处理程序只是:-

public void OnPostSetUserStatuses(int[] UserId, int[] UserAccountStatusId)
{
for (var i = 0; i < UserId.Length; i++)
{
userService.SetUserStatus(UserId[i], UserAccountStatusId[i]);
}
var userList = userService.GetUsers();
UserList = userList;
return Page();
}

模型定义如下:-

public List<User> UserList { get; set; }
[BindProperty]
public int[] UserAccountStatusId { get; set; }
[BindProperty]
public int[] UserId { get; set; }

因此,当我发布提交时,页面处理程序被触发,数据库被更新,新值被返回到UserList中的模型。

此外,行中写道:-

@Model.UserList[i].UserAccountStatusId

以正确的值显示。

但是,下拉列表不会使用正确的选定值进行刷新。我认为问题是我有多次摔倒,似乎有一些有约束力的问题在发生,我一辈子都无法理解。

有人能帮忙吗。

尝试使用DropDownListFor

@Html.DropDownListFor(model=> model.UserAccountStatusId[i],
...., @Model.UserAccountStatusId[i])
````

最新更新