【问题标题】:value of selectList from razor in c# Controllerc#控制器中剃刀中selectList的值
【发布时间】:2018-12-24 00:36:57
【问题描述】:

我在这个问题上苦苦挣扎了很长时间。 我希望我的 selectListItem 的值在控制器中使用它来进行正确的 API 调用。

这就是我的剃须刀代码:

            var selectList = new SelectList(
            new List<SelectListItem>

            {
new SelectListItem {Text = "Borussia Dortmund", Value = "10303", Selected= false},
new SelectListItem {Text = "FC Bayern München", Value = "10285", Selected= false},
new SelectListItem {Text = "Bayer 04 Leverkusen", Value = "10281", Selected= false},
           .
           .
           .
    }, "Value", "Text", 1);
    @Html.DropDownList("ddlChosenTeam", selectList, "Team wählen", new { @class = "css-class" })

}

如果我在控制器中尝试以下操作,它不知道 selectList:

protected void SquadChosen_Click(object sender, EventArgs e)
    {
        int selectedSquad = selectList.SelectedValue;

    }

如果选择“多特蒙德”,我只想选择像10303这样的值,请注意安全。

编辑: 我写了一些其他代码,这可能是我需要的更多。 我现在的控制器:

 public SelectList UserChosenSquad()
    {

        var ssl = new SelectList(new List<SelectListItem>
        {
            new SelectListItem {Text = "Borussia Dortmund", Value = "10303", Selected = false},
            new SelectListItem {Text = "FC Bayern München", Value = "10285", Selected = false},
            new SelectListItem {Text = "Bayer 04 Leverkusen", Value = "10281", Selected = false},

        }, "Value", "Text");


        return ssl;
    }

模型:

 public class ChosenSquad
{
    public string Text { get; set; }
    public string Value { get; set; }
    public bool Selected { get; set; }

}

现在我在视图中挣扎

@model ChosenSquad

@{ @Html.DropDownListFor(model => model.Text, Model.SelectListItem, "Text", "-Team wählen-")

这是正确的方法吗? 我需要显示 DropDownList,然后像以前一样显示值,我首先想查看我的列表,然后可能使用查找所选项目的 if 方法获取值,对吧!?

【问题讨论】:

  • 为什么要在视图中创建和定义变量?这一切不应该在控制器/模型中完成吗?
  • 我不止一次听说过,我想我同意你的看法,但我构建了 3 个 selectLists 只是为了尝试任何事情来获得价值。我把这个寄到这里只是随机的^^
  • 见下面的答案。应该是你想要的

标签: c# razor selectlist selectlistitem


【解决方案1】:

虽然我不同意您创建此下拉列表的方式,因为您实际上不应该在视图中创建和定义新变量。要将数据从视图传递到控制器,您应该在下拉菜单上有一个调用 javascript 函数的 onchange 事件。

@Html.DropDownList("ddlChosenTeam", selectList, "Team wählen", new { @class = "css-class", onchange="javascript:sendToController(this.value)" })

javascript 函数应该看起来像这样:

function sendToController(value)
{
    var json = '{value: ' + value + '}';

    $.ajax({
       url:'@Url.Action('method','controller')',
       type: 'POST',
       data: json,
       contentType:'Application/json',
       success:function(result){
           //whatever you're doing next
       }
    });
}

【讨论】:

  • 这对我不起作用,但感谢您的帮助。我写了另一个列表,这样你就不必再对这座建筑生气了;)
【解决方案2】:

知道了。我刚刚像这样编辑了我的列表:

public List<SelectListItem> ChosenSquad()
    {

        var ssl = new List<SelectListItem>
        {
            new SelectListItem {Text = "Borussia Dortmund", Value = "10303", Selected = false},
            new SelectListItem {Text = "FC Bayern München", Value = "10285", Selected = false},
            new SelectListItem {Text = "Bayer 04 Leverkusen", Value = "10281", Selected = false},

        return ssl;
    }

在我看来,我得到了以下信息:

<select id=SquadSelectList asp-items="@((List<SelectListItem>)ViewData["Teams"])"></select>

现在它呈现列表,我只需要在选择时从中取出值,帮助会很好,但最重要的事情已经完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多