asp.net - 尝试返回 SelectListItem 下拉列表的视图模型
问题描述
这是我的控制器
[HttpGet]
public IActionResult Unregister(LinkedServiceTable lst)
{
lst.BuildLinkedServices();
var model = new LinkedServiceTableViewModel
{
LinkedServices = GetLinkedServices(lst)
};
return View(model);
}
[HttpPost]
public IActionResult Unregister(LinkedServiceTableViewModel vm)
{
return View(vm);
}
private IEnumerable<SelectListItem> GetLinkedServices(LinkedServiceTable lst)
{
var roles = lst.LinkedServices.Select(x => new SelectListItem
{
Value = x.LinkedServiceId.ToString(),
Text = x.ServiceName
});
return new SelectList(roles, "Value", "Text");
}
这是我的剃刀观点
@model CDIWeb.ViewModels.LinkedServiceTableViewModel
@{
ViewData["Title"] = "Unregister Linked Service";
}
<h2>@ViewData["Title"]</h2>
<form action="/LinkedService/Unregister" method="post">
@Html.LabelFor(m => m.SelectedLinkedServiceId)
@Html.DropDownListFor(m => m.SelectedLinkedServiceId, Model.LinkedServices)
<button type="submit" value="Submit">Submit</button>
</form>
我要做的就是提交 myrazor 视图,然后在选中下拉列表中的已提交选项的情况下重定向回同一页面。但是,我在HttpPost
视图中收到此错误,HttpGet
视图工作正常并且我能够成功提交。
InvalidOperationException:具有键“SelectedLinkedServiceId”的 ViewData 项属于“System.Int32”类型,但必须属于“IEnumerable<SelectListItem>”类型。
关于为什么会发生这种情况以及如何解决它的任何想法?
解决方案
问题是您将需要再次用数据填充 DropDownList,因为这些数据不会在回发之间持续存在。
[HttpPost]
public IActionResult Unregister(LinkedServiceTableViewModel lst)
{
// Do something, and display the page again with data.
lst.BuildLinkedServices();
lst.LinkedServices = GetLinkedServices(lst);
return View(lst);
}
推荐阅读
- apache-spark - 何在 Apache spark LinearRegression 模型中设置正则化
- reactjs - 在 JWT 到期时反应 Redux 用户注销
- javascript - 如何在 JSDoc 中记录有关对象属性的更复杂信息?
- php - 如何在文字中回显变量
- xamarin - 如何在 DatePickerDialog 中以越南语显示月份和日期?
- java - WildFly 部署错误 - DeploymentUnitProcessingException
- java - 在不同拓扑上运行 K 最短路径算法并添加地图链接
- uml - 你如何在序列图中表示 this.println?
- c - 在 LIBS 路径 Makefile 中转义空格
- maven - 构建:Jenkins 中的失败(Mulesoft)