ASP.NET MVC 从选择列表传递值
ASP.NET MVC passing value from selectlist
我有一个 .NET Core 2 MVC 项目,我对此很陌生。我有一个详细信息视图,其中包含 selected 用户的数据。我正在使用 ViewModel 来显示 selected 用户的数据,一切正常。我最终想要做的是允许将一个用户的身份角色克隆到当前 selected 用户。因此,我在我的视图中有一个包含 SelectList 的面板,您可以在其中 select 一些其他用户(我称他们为源用户)来获取他们当前分配的身份角色。然后我想要一个显示 "Clone" 的按钮,然后单击删除当前用户的所有角色,然后将它们添加到 selected 源用户分配给的角色中。
这是我用于下拉列表的内容:
查看:
<select asp-for="EmployeeList" class="form-control"
asp-items="@Model.EmployeeList"
onchange="this.form.submit()">
<option disabled selected>-</option>
</select>
控制器:
var employeeList = _employeeRepository.GetEmployeeList().Select(e => new
{
Id = e.EmployeeId,
Value = e.PreferredFirstName != null ? e.LastName + ", " + e.PreferredFirstName : e.LastName + ", " + e.FirstName
});
视图模型:
public SelectList EmployeeList { get; set; }
在我看来,我有一个 post:
的表格
@using (Html.BeginForm("Details", "ApplicationUser", FormMethod.Post))
所以我需要将源用户下拉列表的 selected id(字符串)传递给控制器中的 [HttpPost]
详细信息操作。我还想在视图的下拉列表中保留 selected 选项。我还想维护显示在我的 ViewModel 中的所有数据。
非常感谢您的帮助。
如前所述,您的观点确实没有道理。但是我们可以解决这个问题。
视图模型:
public List<SelectListItem> EmployeeList { get; set; }
查看:
<select id="employee-select" asp-for="EmployeeId" class="form-control" onchange="postEmployee()" asp-items="@Model.EmployeeList">
<option disabled selected>-</option>
</select>
<script>
function postEmployee() {
var id = $('#employee-select').val();
if (id !== '' && id != null) {
var url = '../CONTROLLERNAME/UpdateUser/' + id;
var settings = {
"url": url,
"method": 'POST'
};
$.ajax(settings);
}
}
</script>
控制器:
[HttpPost("UpdateUser/{id}")]
public IActionResult UpdateUser([FromRoute] int id)
{
// Do things with id
}
我有一个 .NET Core 2 MVC 项目,我对此很陌生。我有一个详细信息视图,其中包含 selected 用户的数据。我正在使用 ViewModel 来显示 selected 用户的数据,一切正常。我最终想要做的是允许将一个用户的身份角色克隆到当前 selected 用户。因此,我在我的视图中有一个包含 SelectList 的面板,您可以在其中 select 一些其他用户(我称他们为源用户)来获取他们当前分配的身份角色。然后我想要一个显示 "Clone" 的按钮,然后单击删除当前用户的所有角色,然后将它们添加到 selected 源用户分配给的角色中。
这是我用于下拉列表的内容:
查看:
<select asp-for="EmployeeList" class="form-control"
asp-items="@Model.EmployeeList"
onchange="this.form.submit()">
<option disabled selected>-</option>
</select>
控制器:
var employeeList = _employeeRepository.GetEmployeeList().Select(e => new
{
Id = e.EmployeeId,
Value = e.PreferredFirstName != null ? e.LastName + ", " + e.PreferredFirstName : e.LastName + ", " + e.FirstName
});
视图模型:
public SelectList EmployeeList { get; set; }
在我看来,我有一个 post:
的表格@using (Html.BeginForm("Details", "ApplicationUser", FormMethod.Post))
所以我需要将源用户下拉列表的 selected id(字符串)传递给控制器中的 [HttpPost]
详细信息操作。我还想在视图的下拉列表中保留 selected 选项。我还想维护显示在我的 ViewModel 中的所有数据。
非常感谢您的帮助。
如前所述,您的观点确实没有道理。但是我们可以解决这个问题。
视图模型:
public List<SelectListItem> EmployeeList { get; set; }
查看:
<select id="employee-select" asp-for="EmployeeId" class="form-control" onchange="postEmployee()" asp-items="@Model.EmployeeList">
<option disabled selected>-</option>
</select>
<script>
function postEmployee() {
var id = $('#employee-select').val();
if (id !== '' && id != null) {
var url = '../CONTROLLERNAME/UpdateUser/' + id;
var settings = {
"url": url,
"method": 'POST'
};
$.ajax(settings);
}
}
</script>
控制器:
[HttpPost("UpdateUser/{id}")]
public IActionResult UpdateUser([FromRoute] int id)
{
// Do things with id
}