0

我在开发 .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

4

2 回答 2

0

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

这正是 AutoPostBack 的用途。如果您单击另一部分,则当您失去对文本框的关注时,它将触发回发。如果您需要更多证据,请从 MSDN 阅读

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

于 2013-05-06T09:20:03.883 回答
0

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

与 ASP.NET WebForms 相比,ASP.NET MVC 页面的“页面生命周期”是什么? 希望这可以帮助..

现在谈到你的观点。

如果要在 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 项目

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

于 2013-05-06T11:09:22.037 回答