我是ASP.NET的新手,我认为我的问题非常简单,但我在搜索时没有通过谷歌甚至是stackoverflow获得成功。
我有一个asp.net方法(vb.net),它在div中加载一个完整的html页面。 做搜索,我发现它可以是这样的:
在.aspx页面上:
<div id="content"></div>
on .vb codebehind:
Private sub LoadContent()
content.InnerHtml = MyDLL.LoadFromDatabase.Value.ToString()
End Sub
所以,直到这里没什么特别的。
但是,如果考虑从数据库加载的html代码具有<input id="name" type="text">
等表单元素,我的问题就开始......
在页面回发时,这些不会将值<asp:TextBox>
保留在代码上本地创建。
我想要的另一件事就是从它们中检索值以处理代码隐藏的方法,例如:myvar = content.Controls("name").Value
至少,有没有办法解决我的问题?
抱歉我的英语不好,非常感谢。
答案 0 :(得分:1)
CRice是对的。如果您希望视图状态通过回发持久存在,则需要在服务器端创建控件。
小心:我在Asp.Net上动态创建控件的经验不佳,特别是在尝试将事件绑定到它们时。你不仅需要使用代表和活动(一个新手的难题),而且几年前我尝试过时,无论如何我都无法使用它。
如果您要使用动态创建的控件,请确保它值得付出努力,因为现在和将来当您想要维护和添加扩展时,这将是一项努力。根据经验,动态机制总是比静态机制更难维护,但它们提供了更大的灵活性。
话虽如此,如果您还在进行动态html加载,请注意存在更好的解决方案,尽管它们需要不同的架构:客户端框架(最好是angluar.js)提供动态加载&#34 ;模块&#34; (还有更多),这就是你想要的。在服务器端,asp.net MVC及其Razor视图引擎,部分视图等更适合动态html生成。
回到原来的问题,你确定需要完整的回发吗?对Web服务的一个很好的整洁Ajax调用怎么样?可以在很多情况下完成工作而无需重新加载整个页面。我想使用jquery的$.ajax
语法,创建一个简单的.asmx Web服务对你来说最简单。
最后但并非最不重要的,为什么要使用vb.net而不是c#?它吸人。在你还可以的时候放弃它。