【问题标题】:How Can I send selected text to controller from DropdownList如何从 DropdownList 将选定的文本发送到控制器
【发布时间】:2021-06-21 02:49:35
【问题描述】:

我想将下拉列表中选定的文本字段发送到控制器。 当我使用如下代码时,我可以将 id 号发送给控制器,但我在列表中选择的值传递 null。

另外,如果模型中有注册值,我希望在打开页面时在下拉列表中选择该字段。

控制器

    public ActionResult Degerlendir(int id ,string CV_STATU)
        {
        using (MULAKATDBEntities1 ent = new MULAKATDBEntities1())
                    {
                        CvViewModel cv = new CvViewModel();
                        var entData = ent.CV.FirstOrDefault(a => a.ID_CV == id);
                        entData.CV_STATU = CV_STATU;
                        ent.SaveChanges();
                     } 
        }

在视图中

@using (Html.BeginForm("Degerlendir", "Home", FormMethod.Post))
{
<input type="hidden" name="id" value="@Model.Cv.ID_CV" />
 @Html.DropDownListFor(model => model.Cv.CV_STATU,
            new List<SelectListItem> {
            new SelectListItem() { Text = "Secilmedi" },
            new SelectListItem() { Text = "Kabul edildi" },
            new SelectListItem() { Text = "Reddedildi" } },
            new {@id="cv_statu", @class = "form-control" })
<input type="submit" id="btnSubmit" value="KAYDET" class="btn btn-add" />
 }

【问题讨论】:

  • 您始终可以将FormCollection formC 作为参数传入,然后您可以遍历集合以找到您想要获取值的控件(即下拉列表)。如果表单操作中有许多控件,这会很有帮助。

标签: c# asp.net .net asp.net-mvc model-view-controller


【解决方案1】:

在 HTML 帮助器 htmlAttributes 中设置 @name="cv_statu",以便像这样绑定到 POST 上的参数。

还将控制器方法参数更改为小写cv_statu。只有通过 URL 路由传递的参数名称不区分大小写。

【讨论】:

  • 你能发布生成元素的html吗?
  • 还添加了关于将参数更改为小写以匹配回帖的评论。
  • 我更改了这样的代码:在控制器中:public ActionResult Degerlendir(int id,string cv_statu) 视图:@Html.DropDownListFor(model => model.Cv.CV_STATU, new List { new SelectListItem() { Text = "Secilmedi" }, new SelectListItem() { Text = "Kabul edildi" }, new SelectListItem() { Text = "Reddedildi" } }, new {@id="cv_statu", @class= "表单控制", @name="cv_statu" })
  • 如果您在调试时更改控制器,请确保您已重新启动应用程序。如果它仍然不起作用,那么您将需要在您的问题中添加为该元素生成的 html 的样子,以便我们可以准确地看到您正在使用的内容。
【解决方案2】:

我假设您在代码中为ActionResult 共享的内容已经是HttpPost 动作动词。也应该有一个合适的HttpGet

要解决您的问题,请确保您在 DropDownListFor 上设置的第一个参数应该与您的 Degerlendir 的参数匹配

@Html.DropDownListFor(model => model.CV_STATU,
        new List<SelectListItem> {
        new SelectListItem() { Text = "Secilmedi", Value = "Secilmedi" },
        new SelectListItem() { Text = "Kabul edildi", Value = "Secilmedi" },
        new SelectListItem() { Text = "Reddedildi", Value = "Reddedildi", Selected = true} }, "Please select an option",
        new {@id="cv_statu", @class = "form-control" })

如你所见,我改变了你的:

@Html.DropDownListFor(model => model.Cv.CV_STATU

收件人:

@Html.DropDownListFor(model => model.CV_STATU

因为您在此处设置的内容将在您的 HTML 中设置 name 属性。这将绑定在您的 ActionResultDegerlendir 的参数上,尤其是您的参数:

string CV_STATU

最后,我在您的SelectListItem 上添加了Value,因为无论您在 DropDownList 中选择什么,它都会传递给您的 ActionResult。要设置默认选择值,只需添加Selected = true

【讨论】:

  • 在不了解模型的情况下,我假设CV_STATU 不是模型的直接属性,而是属性的属性。我假设这不会编译。
  • 在 OP 帖子中,它是嵌套的,这就是我简化它的原因,它不应该是 Cv.CV_STATU 而是 CV_STATU
  • CV_STATU 不是模型的直接属性,所以我不编译。我将选择列表更改为选择和选项,然后它就可以工作了。但是我有任何想法,选择列表项有什么问题。跨度>
猜你喜欢
  • 1970-01-01
  • 2012-12-05
  • 2022-11-05
  • 2023-04-10
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
相关资源
最近更新 更多