【问题标题】:Get all items from html select list using ASP.net C#使用 ASP.net C# 从 html 选择列表中获取所有项目
【发布时间】:2014-03-19 19:38:10
【问题描述】:

我有以下选择列表:

<select name="Context" id="Context" size="5">
<option>Context1</option>
<option>Context2</option>
<option>Context3</option>
<option>Context4</option>
<option>Context5</option>
</select>

我正在使用 javascript 来上下移动这个选择列表的项目(这是有效的)。我想使用 C# 将生成的订单反馈给 ASP.net。

如果我使用以下代码行,我只得到选定的项目,我如何得到整个列表?

 string items = Request.Form["Context"];

【问题讨论】:

  • 您可以只获取所选项目的价值。它不会发布整个列表。

标签: c# javascript html asp.net list


【解决方案1】:

你可以得到所有这样的项目。

var ddlArray= new Array();
var ddl = document.getElementById('Context');
for (i = 0; i < ddl.options.length; i++) {
    ddlArray[i] = ddl .options[i].value;
}

现在将此 JavaScript 数组传递给您的代码。

【讨论】:

  • 谢谢。将其传递给后面的 c# 代码就是问题所在。我似乎无法使用 HiddenField 执行此操作。你有什么建议吗?谢谢。
  • 我使用以下代码将数据发送到代码后面: HTML/ASP: Javascript: document.getElementById("ContextVals").value = ddlArray; ASP.Net C#:Request.Form["ContextVals"]
【解决方案2】:

一个答案是修改select 使其成为ListBox,然后在服务器上以编程方式访问它:

<asp:ListBox runat="server" name="lstContext" id="lstContext" size="5">
    <asp:ListItem>Context1</asp:ListItem>
    <asp:ListItem>Context2</asp:ListItem>
    <asp:ListItem>Context3</asp:ListItem>
    <asp:ListItem>Context4</asp:ListItem>
    <asp:ListItem>Context5</asp:ListItem>
</asp:ListBox>

请注意,我将其重命名为 lstContext,因为将其重命名为 Context 会导致构建失败(由于与现有的 Context 对象共享名称)。

然后在您的代码中,按照它们出现的顺序访问值:

for (int i = 0; i < lstContext.Items.Count; i++)
{
    string item = lstContext.Items[i].Value;
    // Do something with it
}

您的javascript 应该仍然可以在ListBox 上工作,就像在select 上一样,所以这应该不受影响。

【讨论】:

  • 我之前已经实现了列表框解决方案,但发现它非常慢,因为每次向上/向下移动项目时它都会回调服务器。我需要能够在客户端使用 Javascript 移动项目。我尝试让 Javascript 移动列表框中的项目,但没有运气。谢谢。
【解决方案3】:

创建一个隐藏字段(runat=server)并将打乱的存储到隐藏字段中;您可以通过string itemsOrderedChanged = Request.Form[&lt;HiddenFieldId&gt;];访问服务器端隐藏字段的内容

【讨论】:

  • 我尝试了几种不同的方式将其存储为隐藏字段,但在 ASP 中永远无法访问它。你有更多关于如何做到这一点的信息吗?
【解决方案4】:

尝试像这样将 JavaScript 值传递给隐藏字段。

var hidden=document.getElementById('hidValue');
var string strValues="";
for(var i=0i<ddlArray.Length;i++){
 strValues+=ddlArray[i]+",";
}

hidden.value=strValues;

并在 page_load 或 what_ever 事件中获取此字符串并将其拆分。

protected HtmlControls.HtmlInputHidden hidValue;

protected void Page_Load(object sender, System.EventArgs e)
{
   dynamic hiddenValue = hidValue.Value;
   string [] arr=hiddenValue.Split(",");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多