【发布时间】:2017-03-16 20:07:46
【问题描述】:
我对 mvc 和 razor 视图相当陌生。 我有一个 DropDownListFor ,它成功地填充了数据表中的值和文本列表。 我也成功地将所选值绑定到我的数据模型中的数据列。 但是,我正在使用的数据库没有标准化,我需要从所选项目中获取文本,并将其绑定到我的数据模型中的另一个字段。 做到这一点有多难?
【问题讨论】:
标签: asp.net-mvc view html.dropdownlistfor
我对 mvc 和 razor 视图相当陌生。 我有一个 DropDownListFor ,它成功地填充了数据表中的值和文本列表。 我也成功地将所选值绑定到我的数据模型中的数据列。 但是,我正在使用的数据库没有标准化,我需要从所选项目中获取文本,并将其绑定到我的数据模型中的另一个字段。 做到这一点有多难?
【问题讨论】:
标签: asp.net-mvc view html.dropdownlistfor
您有多种选择:
1.提交后调用数据库获取文本
public ActionResult Submit(int dropDownListId)
{
var text = string.Empty;
var dataItem = this._dbContext.SomeTableData.SingleOrDefault(m => m.Id == dropDownListId);
if (dataItem != null)
{
text = dataItem.Title;
}
// continue
}
2。调整下拉列表值,解析控制器/业务层的值:
如果您使用默认的 DropDownListFor HtmlHelper,您的数据源类型为 IEnumerable<SelectListItem>,因此在构建 Model 类时,您要将其传递给视图,请执行以下操作:
//get data from database
var dataSource = this_dbContext.SomeTableData.Select(m => new SelectListItem()
{
Value = string.Format("{0}|{1}", m.Id, m.Title),
Text = m.Title
}
提交数据后解析值:
public ActionResult Submit(string dropDownListValue) {
string[] values = dropDownListValue.Split('|');
// values[0] = value
// values[1] = text
}
3.将隐藏字段添加到视图并使用 JavaScript 存储文本
$('#dropDownListId').on('change', function () {
var text = $(this).find('option:selected').text();
$('#dropDownListText').val(text); // hidden field
});
并在提交后收集值:
public ActionResult Submit(int dropDownListId, string dropDownListText)
{
//logic
}
【讨论】: