|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
觉得J2EE好像有很多工具,比如servlet,jboss,tomcat,ejb什么的,可是微软的.NET怎么什么也没有啊?asp.net|技能 简介:Anthem是一个很好用的Ajax框架,撑持ASP.NET1.1,2.0。
因为该框架的一切控件都承继自ASP.NET本身的服务器控件,保存了几近一切这些控件的属性和举动(除把它们的PostBack改成CallBack的无革新挪用以外)。以是进修曲线很陡峭。
明天我在利用Anthem的时分碰着了一个对照贫苦的调试成绩,纪录于此。
鄙人面的代码中,我用了一个Anthem.Repeater控件。
<asp:XmlDataSourceID="XmlDataSource2"runat="server"XPath="//NeedDocs/Doc"
EnableCaching="false"></asp:XmlDataSource>
<tableclass="mytable"width="100%"cellspacing="0"cellpadding="0">
<anthem:RepeaterID="rptNeedDocs"runat="server"DataSourceID="XmlDataSource2"
AutoUpdateAfterCallBack="False">
<HeaderTemplate>
<trclass="formTitle">
<td>
选中</td>
<td>
文件、图纸称号</td>
<td>
应送</td>
<td>
是不是原件</td>
<td>
备注</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:CheckBoxID="chkDoc"runat="server"Checked="True"/>
<asp:HiddenFieldID="hidDocId"runat="server"Value=<%#XPath("@Id")%>/>
</td>
<td>
<asp:LabelID="lblDocName"runat="server"Text=<%#XPath("@Name")%>/>
</td>
<td>
<asp:TextBoxID="txtQuantity"runat="server"Text=<%#XPath("@Quantity")%>Width="30"/>
</td>
<td>
<asp:RadioButtonListID="radiolist_IsOriginal"runat="server"SelectedValue=<%#XPath("@IsOriginal")%>
RepeatDirection="Horizontal">
<asp:ListItemValue="True">原件</asp:ListItem>
<asp:ListItemValue="False">正本</asp:ListItem>
</asp:RadioButtonList>
</td>
<td>
<asp:TextBoxID="txtComment"runat="server"Text=<%#XPath("Comment")%>/>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</anthem:Repeater>
</table>
这个代码在运转时,偶然候会呈现一个JS毛病:“未知的运转时毛病”。
而该毛病只在特定情形下产生,在其他相似情形下一般。
亏得VS2005供应了十分壮大的客户端剧本调试功效。我终究将毛病定位到了Anthem发生的一行代码上:
control.innerHTML=result.controls[controlID];
查了相干材料后发明,在IE下,对innerHTML属性赋值的时分,会对所赋的值举行反省。假如不是wellformed,则大概会呈现“未知的运转时毛病”。
因而我判别anthem.Repeater输入的HTML出了成绩。从下面代码中高亮的两行能够看到,table标签在Repeater的表面。因而Repeater自己输入的是一系列tr,并非wellformed的一个全体。
因而我将table的标签头尾分离放进Repeater的HeaderTemplate和FooterTemplate,成绩办理。
(之以是先前把table标签放到表面往了,是由于放在HeaderTemplate和FooterTemplate中的时分,不晓得为何VS的计划器不克不及切换到计划视图了。而改成如许能够办理成绩。)
修正乐成后的代码以下:
<asp:XmlDataSourceID="XmlDataSource2"runat="server"XPath="//NeedDocs/Doc"
EnableCaching="false"></asp:XmlDataSource>
<anthem:RepeaterID="rptNeedDocs"runat="server"DataSourceID="XmlDataSource2"AutoUpdateAfterCallBack="False">
<HeaderTemplate>
<tableclass="mytable"width="100%"cellspacing="0"cellpadding="0">
<trclass="formTitle">
<td>
选中</td>
<td>
文件、图纸称号</td>
<td>
应送</td>
<td>
是不是原件</td>
<td>
备注</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<asp:CheckBoxID="chkDoc"runat="server"Checked="True"/>
<asp:HiddenFieldID="hidDocId"runat="server"Value=<%#XPath("@Id")%>/>
</td>
<td>
<asp:LabelID="lblDocName"runat="server"Text=<%#XPath("@Name")%>/>
</td>
<td>
<asp:TextBoxID="txtQuantity"runat="server"Text=<%#XPath("@Quantity")%>Width="30"/>
</td>
<td>
<asp:RadioButtonListID="radiolist_IsOriginal"runat="server"SelectedValue=<%#XPath("@IsOriginal")%>
RepeatDirection="Horizontal">
<asp:ListItemValue="True">原件</asp:ListItem>
<asp:ListItemValue="False">正本</asp:ListItem>
</asp:RadioButtonList>
</td>
<td>
<asp:TextBoxID="txtComment"runat="server"Text=<%#XPath("Comment")%>/>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</anthem:Repeater>
经由此次的调试,我以为Ajax除带来了界面上呼应敏捷的优点以外,由于引进大批js,也增年夜了调试的难度,因而使用的时分仍是要依据情形弃取。不克不及甚么都上Ajax.
它有很多缺点的,有兴趣可以到网上去搜索一下。于是微软有发明了“下一代”C++:C++/CLI语言,这个可以解决在.NETFramework中,托管C++产生的问题。在《程序员》杂志上,lippman和李建中合作连载介绍了C++/CLI语言。 |
|