【发布时间】:2020-11-07 12:39:44
【问题描述】:
我对 asp net core 还是很陌生,我正在尝试实现一个选择列表,同时将值从视图传递到控制器。其他一切正常,我面临的唯一问题是只有 ID 被传递给控制器,而不是文本/名称。 有人可以告诉我哪里出错了吗?下面是我的代码。
查看片段
<div class="form-group">
<label>Financial Year</label>
<select asp-for="FinancialYear" asp-items="ViewBag.FinancialYear" class="selectpicker" data-dropup-auto="false" data-size="5">
</select>
</div>
模型片段
public class VMOM
{
public int FinancialYear { get; set; }
}
public class VMDropDown
{
public int ID { get; set; }
public string Text { get; set; }
}
控制器片段
[HttpGet]
public IActionResult Create()
{
VMOM vmOM = new VMOM();
ViewBag.FinancialYear = new SelectList(GetFinancialYearList(), "ID", "Text", 0).ToList();
return View(vmOM);
}
[HttpPost]
public IActionResult Create(VMOM vmOM)
{
return View(vmOM);
}
private List<VMDropDown> GetFinancialYearList()
{
List<VMDropDown> vmDropdowns = new List<VMDropDown>
{
new VMDropDown() { ID = 1, Text = "2019" },
new VMDropDown() { ID = 2, Text = "2020" }
};
return vmDropdowns;
}
action方法中接收到的值的SS;请注意,在财政年度中,仅显示年份的 ID,而不是文本值,即 2020
【问题讨论】:
-
这是正常行为。
select中的ID是选项的值,当您提交form时,提交的是值而不是文本。您可以使用 Javascript 和 Ajax 传递您的文本和 ID。 -
好的,谢谢。但是当我第一次以这种方式和第一组参数编码时,我能够获得值。我也得到了控制器中的值。但是当我为其他参数添加相同的代码然后重新运行项目时,它的行为发生了变化。那是什么?
标签: asp.net-core model-view-controller view selectlist