我在使用.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
答案 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项目
我希望这个例子可以帮助你..