ASP.NET:Textbox OnTextChanged MVC刷新整个页面

时间:2013-05-06 09:14:40

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

我在使用.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

2 个答案:

答案 0 :(得分:0)

  

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

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

  

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

答案 1 :(得分:0)

MVC和webforms的生命周期都不同。 MVC不是关于服务器控件.... viewstate ...没有Web窗体中的页面生命周期事件...

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

现在谈到你的观点。

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

的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项目

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