【问题标题】:How to modify the HTML in Javascript and then read the changes in ASP.NET on the postback?如何在 Javascript 中修改 HTML,然后在回发时读取 ASP.NET 中的更改?
【发布时间】:2012-04-14 19:33:51
【问题描述】:

这是一个双重问题,我已经查看了很多地方,无法为这种特殊情况制定一个解决方案。

我会让用户使用单个文本字段输入多个值,例如:

<div style="margin-left: 5px; display: block;">
    <div id="divTemplateLine" style="display: none;">
        <a href="javascript:" onclick="javascript: RemoveLine(this);">x</a>
    </div>
</div>  

使用 Javascript,添加按钮将继续克隆 divTemplateLine 并将文本包含在父节点中。
我得到了所有工作正常。

现在,我想阅读回传中的所有这些行(鲑鱼、汤、味噌、日语)。
我假设此时我处于解析 HTML 的领域,因为我添加的这些 div 不是“runat”服务器。

一个答案可能是使用服务器运行的隐藏值,Javascript 将继续附加到它。是的,这是一个很好的解决方案,但我想看看如何解析 HTML 元素和节点,就像我是用 Javascript 做的,因为我的真实场景比单个值更复杂,所以隐藏值不太行。

欢迎任何意见和/或判断。

【问题讨论】:

    标签: c# javascript asp.net


    【解决方案1】:

    解决方案是保留两个版本的数据,一个显示给用户,一个隐藏输入,然后发回并获取用户选择和保留的数据。

    例如,当您的用户输入“salmon”时,您将其放置在 html 呈现器上,并使用您的序列化方式放置在输入隐藏控件上。当您的用户删除它时,您也将其从隐藏控件中删除。

    最后你会得到类似的东西,然后你把它发回并分析它并保存在你的数据库中。

    <input name="final_select" type="hidden" value="salmon;soup;miso;japanese" />
    

    【讨论】:

    • 这正是我已经在做的事情(根据我在问题中的最后一段)。但是,我正在尝试查看是否有另一种方法,我不必保留两个版本的数据;我希望 HTML 既是数据又是显示。
    • @BeemerGuy 我在我的页面上做同样的事情,我想不出任何其他方式可以更快并且没有错误。如果你发回所有的 html,你会损失大量的回邮,如果你对 dom 进行反分析,也会损失速度。
    【解决方案2】:

    @BeemerGuy:取一个文本框并自动完成扩展器如下:

    <asp:TextBox ID="txtCustName" AutoPostBack="true" AutoComplete="off" runat="server"
                    OnTextChanged="txtCustName_TextChanged" />
                <cc1:AutoCompleteExtender ID="ace1" TargetControlID="txtCustName" ServiceMethod="GetCustomers"
                    MinimumPrefixLength="1" OnClientItemSelected="ace1_itemSelected" FirstRowSelected="true"
                    runat="server" />
    

    Auto Complete Extender 具有服务方法属性,当您在文本框中输入文本时将调用该属性,并将在列表视图中添加文本框值

    ****** Web方法代码在这里******>>

     ListBox list = new ListBox();
    [WebMethod]
    public static DataSet GetCustomers(string prefixText)
    {
       list .Items.Add(New ListItem(prefixText, 0));
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 2016-11-01
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      相关资源
      最近更新 更多