c# - 如何从只有 asp.net core mvc 中的文本项的选择列表中获取选定的项目?
问题描述
如何从只有 asp.net core mvc 中的文本项的选择列表中获取选定的项目值或帖子上的文本?
该模型有一个字符串属性 ChosenText。
目前,ChosenText 在 post 操作方法中总是返回为 null。
标记:
<form asp-action="MakeChange" method="post" id="mainform">
<select name="cars" id="cars" asp-for="ChosenText">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
<button type="submit">Submit</button>
</form>
动作方法:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult MakeChange(TestModel model)
{
if (model.ChosenText.ToUpper() == "VOLVO")
{
}
return View(model);
}
解决方案
您必须将模型和 @Html.AntiForgeryToken() 添加到您的视图中,并从 select 中删除 id 和 names 属性,因为您使用的是 asp-for 和表单提交
@model TestModel
<form asp-action="MakeChange" method="post" >
@Html.AntiForgeryToken()
<select asp-for="ChosenText">
.....
</form>
恕我直言,因为您使用的是模型,所以创建模型也是一个好主意
[HttpGet]
public IActionResult Get()
{
var model= new TestModel();
return View("viewName", model);
}
推荐阅读
- java - 运行 Java 程序返回 sun.awt.X11GraphicsEnvironment 错误或 HeadlessException
- javascript - 正则表达式排除重音
- javascript - 如何在不触及引号内的单词和字母的情况下替换字符串中的特定字母
- reactjs - React - 如何将字体大小添加到 React.createElement 中?
- c# - 如果我们尝试更新的资源没有影响任何行,我们是否应该抛出异常?
- javascript -
标签在附加的textarea jQuery中不起作用 - angular - 将 Angular 从 10 升级到 11 后。我得到“主题”类型的参数
' 不可分配给 'ObservableInput 类型的参数 ' - kotlin - 如何等待流程完成发出值
- javascript - 当用户到达最后一页时如何禁用按钮
- node.js - PDF 中的俄语符号 (pdfkit)