首页 文章

c #Controller中razor的selectList值

提问于
浏览
0

我在这个问题上挣扎很久了 . 我希望我的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" })

}

如果我在我的Controller中尝试以下操作,它不知道selectList:

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

    }

如果选择“borussia Dortmund”,我只想选择像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”,“ - Teamwählen-”)

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

2 回答

  • 0

    虽然我不同意您如何创建此下拉列表,因为您不应该在视图中创建和定义新变量 . 要将数据从视图传递到控制器,您应该在下拉列表上有一个调用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
           }
        });
    }
    
  • 0

    得到它了 . 我刚刚编辑了我的列表:

    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>
    

    现在它呈现List,我只需要在选择时从中获取Value,帮助会很棒,但最重要的是完成 .

相关问题