1

我想要一个从文件动态生成的表单中的列表框(多选),并且在提交后我希望仍然选择相同的字段。

这就是我现在的做法:

<select name="select" size="20" multiple style="Width: 100%">
  <% Response.WriteFile(@"~\Catalogs\"+usergroup+".htm"); %>
</select>

但是这样选择在提交后就消失了。

有没有人对我的问题有更好的解决方案。(文件不一定是最终的 HTML 文件,我只是希望能够从文件中更改 ListBox 的值 + 文本)

非常感谢提前!

4

1 回答 1

2

您可以在后面的代码中动态生成项目并将它们添加到您的列表中。为此,您需要将runat="server"属性添加到您的select, 或使用asp:DropDownList服务器控件。

看起来您正在将文件的内容逐字插入列表中。您可能需要将其更改为更结构化的数据,或者至少将其作为结构化数据读取。

例子:

<%-- in markup of control/page --%>
<asp:DropDownList  runat="server" id="ddlCatalogs" />

// in codebehind

// to make this work, you'll need to read the file one line/item as a time
foreach( var item in listOfItemsInFile ){
    var li = new ListItem();

    // TODO: populate "li" from the item's data

    // add it to the server control's collection...now it's a part of the ASP.Net
    // page lifecycle
    this.ddlCatalogs.Controls.Add( option );
}

一旦您将下拉列表视为服务器控件,您可以通过多种方式维护状态(默认情况下 ViewState 会处理它,但是列表中的许多项目 ViewState 会变得非常大)。

或者,您可以采用不同的方向(不涉及服务器控件),只需查看原始Request.Form集合以查看它是否包含您的选择列表的数据,然后将其写回您的页面。

即使在这种情况下,也可能需要以更结构化的方式枚举输入文件,以便您可以选择正确的选项。

于 2013-02-13T08:32:20.933 回答