通过单击不同的链接将不同的HTML代码加载到单个页面中
所以,我的老板有一个疯狂的想法——整个网站只在一个页面上工作。到目前为止,还可以,但问题是: -不同的页面具有不同的通过单击不同的链接将不同的HTML代码加载到单个页面中,html,asp.net,Html,Asp.net,所以,我的老板有一个疯狂的想法——整个网站只在一个页面上工作。到目前为止,还可以,但问题是: -不同的页面具有不同的divs和内容(与通常一样),当单击某个div(或其中的链接)时,一些div会展开/折叠,以显示不同的内容。那很好,但是 他不想使用JavaScript或任何东西来动态查看网站(“因为我将在两周后离开,他和其他员工无法使用JS,因此无法在需要时改进/维护) 他的想法是将网站所有页面变体的HTML代码存储在数据库中,并在单击某个链接后使用特定的HTML重新加载页面。因此,每个页面的
div
s和内容(与通常一样),当单击某个div(或其中的链接)时,一些div会展开/折叠,以显示不同的内容。那很好,但是
- 他不想使用JavaScript或任何东西来动态查看网站(“因为我将在两周后离开,他和其他员工无法使用JS,因此无法在需要时改进/维护)
- 他的想法是将网站所有页面变体的HTML代码存储在数据库中,并在单击某个链接后使用特定的HTML重新加载页面。因此,每个页面的
文件没有区别,但所有页面只有一个文件.html
<script runat="server" type="text/C#">
public string getPage(string name)
{
string page = "null";
switch (name)
{
case "media":
page = getMediaPage(); <!-- just function from the code-behind that retrieves the html code from the DB and passes it to the page -->
break;
case "home":
page = getHomePage(); <!-- just function from the code-behind that retrieves the html code from the DB and passes it to the page -->
break;
}
return page;
}
</script>
</head>
<body onload="addEvents();">
<form id="form1" runat="server">
<div id="parent">
<div id="presentation">
SomeCompany ApS Street3 | CITY | INFO@Comapny.com TLF: 999999
</div>
<%=getPage("home") %>
</div>
</form>
所以我称这段代码为在页面中猛击它。扭曲发生在我点击
时,因此它会正常加载页面,但页面中始终有
静止不动,因为我需要从某个地方开始,它会尝试再次加载上一页,然后。。。服务器错误
我知道这有点愚蠢,但我不能再和他争论了
所以我的问题是——有没有办法用某种OnClick(Event e)
或其他方法来处理这些问题,比如调用不同的函数(我已经开始了)。
或者我应该告诉老板这样不行 如上所述,这不是一个好主意,但您可以通过使用一些Web控件来实现它 如果页面中有
,请将此更改为:
<asp:literal id="ltlContent" runat="server" />
页面上任何应加载其他内容的链接,将其更改为LinkButton
控件,其单击事件可能有:
<asp:LinkButton id="linkMedia" runat="server" onclick="LoadContent" CommandArgument="media" />
public void LoadContent(object sender, EventArgs e){
ltlContent.Text = getPage(e.CommandArgument);
}
public void LoadContent(对象发送方、事件参数){
ltlContent.Text=getPage(e.CommandArgument);
}
您可以尝试获取url上的参数。
将它们添加到您的链接“”页=媒体“
然后当你到达时解析url$\u GET[“page”]告诉你的老板雇佣一个懂JS的人。他想要的是一个“单页应用程序”,或SPA。Visual Studio 2012有一个模板,可以为您提供一个实现此目的的好方法。我相信还有其他方法可以完成这项任务,这并不可怕,但是。。。在数据库中存储静态html不好。。打破关注点分离原则最糟糕的方法之一。@JasonP-是的,但我使用的是VS2010,我真的不想处理MVC等等。我不想使用查询字符串。我如何在这里传递
“home”
参数:
,因为我遇到了关于错误语法的错误。啊,所以你的意思是我必须有一个不同的回调函数来放入控件中,对于每个页面。。。我明白了。@Syspect您可以传递一个CommandArgument
,只需使用one方法即可。我只是在展示POCOk,我得到了这个
,并得到了错误方法名,而我的代码中有一个同名的方法。。。我想知道为什么编译器会给我这个错误。@Syspect编辑了我的答案。注意Onclick
值不包含()
ltlContent.Text = getPage("home");
<asp:LinkButton id="linkMedia" runat="server" onclick="LoadContent" CommandArgument="media" />
public void LoadContent(object sender, EventArgs e){
ltlContent.Text = getPage(e.CommandArgument);
}