如何在MVC控制器

时间:2017-11-14 11:03:52

标签: c# html asp.net-mvc-4

我在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.请帮助

3 个答案:

答案 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)。该元素的文字部分仅供用户查看,以便更轻松地进行选择。

请告诉我这是否有帮助!