我在html中有这个DropDownList,我可以选择Texts.Text = Project,Value = ID
@Html.DropDownList("Project", new SelectList(Model.dropConfig, "Project", "ID"), "-- Select LineID --", new { required = true, @class = "form-control" })
在控制器中的单击提交按钮上,我可以看到传递的值(ID)将被发布回DB。我希望将文本发布到DB中。
控制器侧代码行:
detailsConfig.Project = Convert.ToString(form["Project"]);
例如: 如果下拉列表值为
Project ID
test 1
testagain 2
在控制器中我应该接受测试,而不是1.请帮助
答案 0 :(得分:2)
您使用该下拉更改事件并将该名称存储在隐藏字段中,并将该值传递给控制器。
查看: - 强>
@Html.DropDownList("Project", new SelectList(Model.dropConfig, "Project", "ID"), "-- Select LineID --", new { required = true, @class = "form-control",@id="ddlProject" })
<input type="hidden" id = "hdnProjectName" name="ProjectName" />
<强> Jquery的: - 强>
$("#ddlProject").on("change", function () {
$("#hdnProjectName").val($(this).find("option:selected").text());
});
<强>控制器: - 强>
public ActionResult Save(FormCollection formcollection)
{
var projectName = formcollection["ProjectName"];
}
答案 1 :(得分:1)
new SelectList(Model.dropConfig, "Project", "Project")
上述变化解决了我的问题。谢谢@StephenMuecke:)
答案 2 :(得分:0)
首先,您绝对应该向您的模型强烈输入您的下拉列表。
我的意思是......
在控制器中,我将创建要在视图中使用的选择列表。
<强>控制器强>
ViewBag.ProjectSelection = new SelectList(/* your data source */, "Project", "Project");
声明:
提示文字值不是首选,因为select元素的文字值通常不是唯一。将
ID
提交到服务器是最佳做法..然后您可以根据您提交的ID
查询数据库以获取所需的值。这是获得最准确可靠数据的最佳方式。
然后在您的视图中,强力键入您的ProjectSelection
选择列表到模型中的Project
属性。
查看强>
@Html.DropDownListFor(model => model.Project, (IEnumerable<SelectListItem>)ViewBag.ProjectSelection, "-- Select LineID --", new { required = true, @class = "form-control" })
您为什么在下拉列表中声明required
?这应该在您的模型中声明。
<强>解释强>
在MVC中,当涉及HTML元素时,用户可以选择选项提交到服务器(下拉列表,列表框等)..只有值将被提交(在您的情况下是ID
)。该元素的文字部分仅供用户查看,以便更轻松地进行选择。
请告诉我这是否有帮助!