【问题标题】:ASP.NET : Textbox OnTextChanged MVC refresh whole pageASP.NET:文本框 OnTextChanged MVC 刷新整个页面
【发布时间】:2013-05-06 09:14:39
【问题描述】:

我在开发 .net 应用程序时遇到了问题。

我正在使用文本框上的事件 OnTextChanged 来更改另一个文本框中的内容,第一个文本框具有 AutoPostBack="true",但是当我在其中写入并单击另一部分时,页面会完全刷新。

这是我的 ascx 代码:

<form id="Form1" runat="server">
    Change text
    <asp:TextBox id="txt1" runat="server" ontextchanged="ejemplo" autopostback="true"/>
    <p><asp:Label id="lbl1" runat="server" /></p>
</form>

和脚本在同一个ascx页面:

<script runat="server">
protected void ejemplo(object sender, EventArgs e)
        {
            lbl1.Text = "Changed";
        }
</script>

我正在使用 MVC4, 感谢您的回答。

编辑:

以下是真实情况的视频: http://remainedesign.com/video/asd.html

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 textbox autopostback


    【解决方案1】:

    MVC 和 Web 表单的生命周期都不同。 MVC 不是关于服务器控件....视图状态...网页表单中没有页面生命周期事件...

    What is the 'page lifecycle' of an ASP.NET MVC page, compared to ASP.NET WebForms? 希望这会有所帮助..

    现在进入你的重点。

    如果您想在 Textbox2 中显示某些内容,同时在 Textbox1 中输入值,则必须使用客户端脚本,请参见下面的示例

    javascript

    <script type="text/javascript" language="javascript">
            function textCounter(field, field2, maxlimit) {
                var countfield = document.getElementById(field2);
                if (field.value.length > maxlimit) {
                    field.value = field.value.substring(0, maxlimit);
                    return false;
                } else {
                    countfield.value = maxlimit - field.value.length;
                }
            }
    </script>
    

    您的 HTML 页面

    <%using (Html.BeginForm("Index", "Account", FormMethod.Post)) // here index is a ActionName, Account is a controller name
          {%>
    
    <input type="text" id="textbox1" name="Message"  onkeyup="textCounter(this,'textbox2',208)"/>
    
    <input disabled  maxlength="3" size="3" value="208" id="textbox2"  /></label>
    
    <input type="submit" value="Send" />  
    <%}%>
    

    这里
    textbox1 中 keyup 事件的 textCounter() 函数将在 textbox2 中显示值,

    提交按钮将提交表单,该表单调用控制器“帐户”上的操作“索引”,请参阅下面的操作如何操作

    public class AccountController : Controller
    {
        [HttpPost]
        public ActionResult index(FormCollection result)
        {
         string TextBoxValue=result["Message"];
         return view("yourviewname");
         }
    }
    

    请注意,以上示例仅适用于 MVC 项目

    我希望这个例子可以帮助你..

    【讨论】:

      【解决方案2】:

      第一个文本框具有 AutoPostBack="true",但是当我在其中写入时 点击另一部分,页面完全刷新

      这正是 AutoPostBack 的用途。如果您单击另一部分,那就是当您失去对文本框的关注时,它将触发回发。如果您需要更多证据,那么read this from MSDN

      获取或设置一个值,该值指示是否自动回发到 当 TextBox 控件失去焦点时发生服务器。

      【讨论】:

      • 感谢您的回答,但是我刷新没有问题,问题是抛出事件时我需要更新的文本没有改变,它不起作用,只是它刷新所有页面,仅此而已。
      • "...我对刷新没有问题...", "...当事件被抛出时没有改变,它不起作用,只是它刷新了所有页面。 ..” - 我认为您对正在发生的事情感到困惑。请再次阅读我的回答。它不起作用的原因是您的页面正在刷新。也许你想在你的文本框上做一个 ajax 回发。
      • 您好 von,感谢您的回复,我正在尝试本教程:asp-net-example.blogspot.com/2009/03/… 当另一个响应 OnTextChange 事件时,它使用 AutoPostBack 并更改一个文本框中的内容,我没有抓住怎么了,看起来还不错
      • 这是正在发生的事情的视频,我先试试你发给我的教程:remainedesign.com/video/asd.html
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-04
      • 2019-09-12
      • 2013-01-28
      • 2011-10-23
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多