Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过单击不同的链接将不同的HTML代码加载到单个页面中_Html_Asp.net - Fatal编程技术网

通过单击不同的链接将不同的HTML代码加载到单个页面中

通过单击不同的链接将不同的HTML代码加载到单个页面中,html,asp.net,Html,Asp.net,所以,我的老板有一个疯狂的想法——整个网站只在一个页面上工作。到目前为止,还可以,但问题是: -不同的页面具有不同的divs和内容(与通常一样),当单击某个div(或其中的链接)时,一些div会展开/折叠,以显示不同的内容。那很好,但是 他不想使用JavaScript或任何东西来动态查看网站(“因为我将在两周后离开,他和其他员工无法使用JS,因此无法在需要时改进/维护) 他的想法是将网站所有页面变体的HTML代码存储在数据库中,并在单击某个链接后使用特定的HTML重新加载页面。因此,每个页面的

所以,我的老板有一个疯狂的想法——整个网站只在一个页面上工作。到目前为止,还可以,但问题是: -不同的页面具有不同的
div
s和内容(与通常一样),当单击某个div(或其中的链接)时,一些div会展开/折叠,以显示不同的内容。那很好,但是

  • 他不想使用JavaScript或任何东西来动态查看网站(“因为我将在两周后离开,他和其他员工无法使用JS,因此无法在需要时改进/维护)

  • 他的想法是将网站所有页面变体的HTML代码存储在数据库中,并在单击某个链接后使用特定的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&nbsp;&nbsp;&nbsp;Street3&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;CITY&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;INFO@Comapny.com&nbsp;&nbsp;&nbsp;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);
}