C# ASP.NET MVC-获取列表框中选定索引的值
我是编程新手。我正在尝试将我的ASP.NET Webforms项目迁移到ASP.NET MVC(用于学习目的)。我需要从ASP.NET MVC中的列表框中获取所选索引的值,并使用此索引对文本框中的字符串进行排序。在我的webforms项目中非常简单:C# ASP.NET MVC-获取列表框中选定索引的值,c#,asp.net-mvc,listbox,C#,Asp.net Mvc,Listbox,我是编程新手。我正在尝试将我的ASP.NET Webforms项目迁移到ASP.NET MVC(用于学习目的)。我需要从ASP.NET MVC中的列表框中获取所选索引的值,并使用此索引对文本框中的字符串进行排序。在我的webforms项目中非常简单: <asp:ListBox ID="ListBox1" runat="server" AutoPostBack="True" Height="166px" Width="198px" BackColor="Black"
<asp:ListBox ID="ListBox1" runat="server" AutoPostBack="True"
Height="166px" Width="198px"
BackColor="Black" Font-Bold="True" ForeColor="White" Font-Size="Small"
OnSelectedIndexChanged="ListBox1_SelectedIndexChanged">
</asp:ListBox>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server"
Height="149px" Width="286px"
TextMode="MultiLine" OnTextChanged="TextBox1_TextChanged"
AutoPostBack="True" Font-Bold="True" ForeColor="#006600">
</asp:TextBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ListBox1"
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
尽管在IT论坛上搜索了两天,但我还没有找到在ASP.NET MVC中接收所选索引的方法
我以以下方式填充视图中的列表框:
@Html.ListBoxFor(x => x.SelectedIndexes, new SelectList(Model.Entries,
"Value", "Text"), new { id = "ListBox1", onchange =
"selectedIndexChanged()", style = "width:198px; height:166px; color:white;
background:black; font-weight:bold" })
在模型中创建了条目列表,并通过控制器发送到视图。它可以工作,并填充列表框。但在ASP.NET MVC中,似乎没有类似于ListBox1.SelectedIndex的东西。是否可以在客户端接收该值(JavaScript语句:document.getElementById(“ListBox1”).selectedIndex
),但似乎无法将该值传输到服务器端
有人知道如何提取所选索引的值并将其传输到模型中吗
非常感谢您。ListBoxFor()接受
IEnumerable
作为参数,因此您不必在此处使用SelectList。您可以使用linq生成项目,在您的情况下,您可以将new SelectList(Model.Entries,“Value”,“Text”)
替换为Model.Entries.Select.Select((e,i)=>new SelectListItem{Text=e.Text,Value=i.ToString()})
ListBoxFor()接受IEnumerable
作为参数,因此您不必在此处使用SelectList。您可以使用linq生成项目,在您的情况下,您可以将new SelectList(Model.Entries,“Value”,“Text”)
替换为Model.Entries.Select.Select((e,i)=>new SelectList项目{Text=e.Text,Value=i.ToString()})
在MVC控制器中,使用HTML的name属性自动将值从HTML视图绑定到模型。
因此,您应该在接收参数模型和Razor语法中使用相同的名称,如(使用property name=“ListBox1”使服务器本身能够理解它):
在MVC中,控制器使用HTML的name属性自动将HTML视图中的值绑定到模型。 因此,您应该在接收参数模型和Razor语法中使用相同的名称,如(使用property name=“ListBox1”使服务器本身能够理解它):
你的问题让人困惑!这就是我的理解。具体说明您是想在Controller中接收选定的值,还是想在更改下拉列表中使用DOM?我想在将使用它的模型中接收选定索引的编号。因此,您可以使用我提供的方法来实现它。非常感谢您的帮助:-)。我也有一些关于绑定的问题,但现在它可以工作了。你的问题让人困惑!这就是我的理解。具体说明您是想在Controller中接收选定的值,还是想在更改下拉列表中使用DOM?我想在将使用它的模型中接收选定索引的编号。因此,您可以使用我提供的方法来实现它。非常感谢您的帮助:-)。我在绑定方面也遇到了一些问题,但现在它可以工作了。如果您想保持在同一页面上,需要使用ajax将值发送到服务器。当你选择一个选项时,你想做什么?是的,没错,这就是我想做的(就像在我的webforms项目中一样——请看上面的代码,至少我被告知这是ajax)。在刚刚获得所选索引的帮助之后,我开始了解ajax是如何与ASP.NET MVC一起使用的,以及选择项目将如何触发事件(现在我使用submit按钮进行测试)。当然,任何帮助都将不胜感激。当你选择一个选项时,你仍然没有解释你想要什么<代码>$('#selectedIndex').change(function(){var selected=$(this.val();$.post(您的url,{id:selected}.function(data){do something with the data your return});})并去掉
onchange=“selectedIndexChanged()”
(使用)。并用类替换样式属性。而且它已经看起来像是
Model。条目`是IEnumerable,因此在视图中使用新的选择列表(…)创建另一个相同的条目是毫无意义的。对不起。。。我想使用所选索引对模型中的一些字符串值进行排序,然后在文本框中显示这些值。您可以看到原始webforms项目中的功能(这只是为了我的学习目的,所以不要把那里的文本看得太重),username:Klient,password:1234如果您想保持在同一页面上,您需要使用ajax将值发送到服务器。当你选择一个选项时,你想做什么?是的,没错,这就是我想做的(就像在我的webforms项目中一样——请看上面的代码,至少我被告知这是ajax)。在刚刚获得所选索引的帮助之后,我开始了解ajax是如何与ASP.NET MVC一起使用的,以及选择项目将如何触发事件(现在我使用submit按钮进行测试)。当然,任何帮助都将不胜感激。当你选择一个选项时,你仍然没有解释你想要什么<代码>$('#selectedIndex').change(function(){var selected=$(this.val();$.post(您的url,{id:selected}.function(data){do something with the data your return});})并去掉onchange=“selectedIndexChanged()”
(使用)。并用类替换样式属性。而且它已经看起来像是
Model。条目`是IEnumerable,因此在视图中使用新的选择列表(…)创建另一个相同的条目是毫无意义的。对不起。。。我想使用所选索引对模型中的一些字符串值进行排序,然后在文本框中显示这些值。您可以在原始webforms项目中看到该功能(它仅用于我的学习目的,因此不要太认真地对待那里的文本),用户名:Klient,密码:1234
@Html.ListBoxFor(x => x.SelectedIndexes, new SelectList(Model.Entries,
"Value", "Text"), new { id = "ListBox1", onchange =
"selectedIndexChanged()", style = "width:198px; height:166px; color:white;
background:black; font-weight:bold" })
@Html.ListBoxFor(x => x.SelectedIndexes, new SelectList(Model.Entries,
"Value", "Text"), new{ id ="ListBox1",name="ListBox1",
onchange="selectedIndexChanged()",
style = "your css" })