我还是个刚刚入门的程序猿与大家分享下最近我做的一个项目,如有错误,请大师们指点一二!
HTML:
<tr>
<td>
<asp:Label ID="Label5" runat="server" CssClass="Page_Label">登陆账号</asp:Label>
</td>
<td>
<input type="text" id="txtSignMember" runat="server" class="Page_TextBox" readonly="readonly"/>
<asp:ImageButton ID="lBUser" runat="server" ImageUrl="~/Themes/Default/Images/icon_view.gif"
OnClientClick="return OnSelect();"></asp:ImageButton>
</td>
<td>
<asp:Label ID="Label6" runat="server" CssClass="Page_Label">姓名</asp:Label>
</td>
<td>
<asp:TextBox ID="txtSignMemberName" runat="server" CssClass="Page_TextBox"></asp:TextBox>
</td>
</tr>
Js:
<script type="text/javascript">
function OnSelect() {
var returnUserValue = window.showModalDialog("FUserSelected.aspx", "dialogHeight: 500px; dialogWidth: 400px; dialogTop: 150px; dialogLeft: 350px; edge: Raised; center: Yes; resizable: Yes; status: No;");
if (returnUserValue != undefined) {
var str = returnUserValue.split('|');
document.getElementById('txtSignMember').value = str[1].toString();
document.getElementById('txtSignMemberName').value = str[0].toString();
}
return false;
}
</script>
.cs
billEntity.Signmember = txtSignMember.Value.Trim();
this.txtSignMemberName.Enable=true;
billEntity.Signmembername = txtSignMemberName.Text.Trim();
实质上讲就是:当服务器控件属性为Readonly或者Enable时js可以给控件赋值,但是后台调用不到该值
主要测试
一.主要是前台写asp.net控件<asp:TextBox runat="server" >并用Enable=“false” 和Readonly=true测试
1.当txtsigmembername的enable属性为true时js给控件<asp:TextBox ....>赋值在页面上可以看到有值,观察转换前台html<input type="text" id=".." disabled="true" value=“有值”>,结果在后台调用的时候会接收不到值,值为空
2.当txtsigmembername的Readonly属性为true时js给控件<asp:TextBox ....>赋值在页面上可以看到有值,观察转换前台html<input type="text" id=".." readonly="readonly" value=“有值”>,结果在后台调用的时候会接收不到值,值为空
二.使用在后台加属性的方法给控件加Readonly进去 this.txtSignMemberName.Attributes.Add("readonly", "readonly");
实验结果是前台效果不变,并且在后台有值,观察转换前台html<input type="text" id=".." readonly="readonly" value=“有值”>跟上面第一条的第二个前台是一致的。
我怀疑有能是微软的bug 或者是iE8有问题--》未测
三.使用在前台改写控件以html的形式<input type="text" runat="server" id=".." readonly="readonly" >稍微修改下后台this.txt.value的形式
实验结果是前台效果不变,并且在后台有值
最终结果二、三是可行的,结论是:微软的readonly转换上与js有冲突