请教。有关静态页面生成的问题

noot_james 2014-06-28 03:39:46
我想把login.aspx生成静态页面,然后由于 我的登录按钮使用的是服务器控件,在此按钮事件下面写了个很简单的。代码如下
//等路按钮的逻辑
protected void Button1_Click(object sender, EventArgs e)
{
ClientScript.RegisterClientScriptBlock(this.GetType(), "ssss", "<script>alert('sss')</script>");
}
然后我用生成的登录界面login.html,点击按钮登录,弹出此消息框时的,url地址是login.aspx,因为生成的html中的action是
login.aspx,
<form method="post" action="login.aspx" id="form1">
所以我在想,能不能信息弹出的时候,url还显示的还是login.html,

我的解决方式,登录用js来做,或者如果出现login.aspx,就用重写的方式改成login.html显示,

不知道还有没有其他的更好的方式,因为网站有些部分用到了服务器控件,要回发。

还有个疑问,全站静态化,原有的aspx页面,是不是要尽量少用服务器控件,进行数据提交呢。
...全文
605 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jame_peng 2014-06-29
  • 打赏
  • 举报
回复
//生成商品信息 protected void Button1_Click(object sender, EventArgs e) { List<Book> list = BookDAL.GetBooksAllBy(); foreach (var item in list) { GrenareHtml(item.BID); } } public void GrenareHtml(int bid) { string url = "http://" + Request.Url.Host + ":" + Request.Url.Port + @"/goods.aspx?bid="+bid; HttpWebRequest requst = WebRequest.Create(url) as HttpWebRequest; requst.Method = "get"; requst.ContentType = "text/html;charset='gb2312'"; using (HttpWebResponse response = requst.GetResponse() as HttpWebResponse) { using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("UTF-8"))) { string str = sr.ReadToEnd(); //文件路径 string path = Server.MapPath("~/html/"+bid+".html"); using (FileStream fs = new FileStream(path, FileMode.Create)) { //写文件保存 using (StreamWriter sw = new StreamWriter(fs, Encoding.Default)) { sw.Write(str); } } } } Response.Write("生成成功"); } }
jame_peng 2014-06-29
  • 打赏
  • 举报
回复
楼上的兄弟说的有理,呵呵,我估计他也是在考虑如何解决,个人觉得,他肯定查了较多的资料,对网站静态化也有一定的了解。 对于这个问题该如何解决,我也期待,呵呵
threenewbee 2014-06-28
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/zh-cn/library/ms972974.aspx 注意文章中 namespace ActionlessForm { public class Form : System.Web.UI.HtmlControls.HtmlForm { protected override void RenderAttributes(HtmlTextWriter writer) { writer.WriteAttribute("name", this.Name); base.Attributes.Remove("name"); writer.WriteAttribute("method", this.Method); base.Attributes.Remove("method"); this.Attributes.Render(writer); base.Attributes.Remove("action"); if (base.ID != null) writer.WriteAttribute("id", base.ClientID); } } } 这一段。
  • 打赏
  • 举报
回复
1. 你追求url上显示的后缀是.html,有什么意义呢?“url重写”如果只是问了伪造一个后缀名,这是可悲的。有人说什么“搜索引擎‘喜好’.html后缀”这是瞎编的。 1. 使用.html文件的道理就在于,它需要脱离asp.net、php等系统处理,而轻量级地部署。这个时候,使用aspx来生成html文件也是一个极好的方法,例如
protected override void Render(HtmlTextWriter writer)
{
    var sb = new StringBuilder();
    base.Render(new Html32TextWriter(new StringWriter(sb)));
    var str = sb.ToString();
    File.WriteAllText(MapPath("~/index.html"), str);
    writer.Write(str);
}
而且你应该在aspx页面顶上设置 EnableSessionState="False" EnableViewState="false" 。这时候,就绝不是什么“尽量少用服务器控件”,因为使用服务器控件是一种高效的页面设计手段,应该多用。反正这跟最后.html文件的执行效率没有关系,只是一次性生成的。 3. 如果不是像2.这样的设计,那么真正的技术在于使用OutputCache技术。而根本不是使用什么.html文件。应该使用aspx的时候,就应该明确地使用aspx。此时使用什么.html文件是画蛇添足的。 4. 使用Ajax进行应用程序设计,这是一个独立的设计范畴。它在“单个页面会话”上就在浏览器端执行了一个完整的应用程序。这根本就不是为了“保持url上显示.html后缀”这种目的的。如果你抱着坑爹的那个目的来使用Ajax,那么我想你的Ajax技术可能也是用于噱头、没有太多知识经验。 5. 你所谓的“全站静态化”如果就是为了全站的url路径的后缀都显示.html后缀,我建议你还是干点正常的事情。把这种歪曲了“静态化”的概念,丢回给某些博主、培训班的教师去坑别人吧。
wangnaisheng 2014-06-28
  • 打赏
  • 举报
回复

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧