【问题标题】:Which Control should be used for output directly in page or should I use Response.Write?哪个控件应该用于直接在页面中输出,还是应该使用 Response.Write?
【发布时间】:2014-02-28 17:56:24
【问题描述】:

我需要在用户控件中输出以下内容...。目前在 .ascx 文件中输出,但我需要在 .ascx.cs 文件中输出它来更改控件。

.ascx 文件中的当前代码是这样的:

<link rel="stylesheet" href="<%=MMG.Global.FileHelper.GetCSSVersion("/scripts/jquery-select2/select2.css") %>" />
<link rel="stylesheet" href="<%=MMG.Global.FileHelper.GetCSSVersion("/styles/custom-theme/jquery-ui-1.9.1.custom.css") %>" />
<link href="<%=MMG.Global.FileHelper.GetCSSVersion("/styles/styles.css") %>" type="text/css" rel="stylesheet"  media="all" />
<link href="<%=MMG.Global.FileHelper.GetCSSVersion("/styles/print.css") %>" type="text/css" rel="stylesheet" media="print" />

<link rel="stylesheet" href="<%=MMG.Global.FileHelper.GetCSSVersion("/scripts/jquery-fancybox/jquery.fancybox.css") %>" />

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<!--<script type="text/javascript" src="/scripts/jquery.stickyfooter.js"></script>
<script type="text/javascript" src="/scripts/modernizr.js"></script>
<script type="text/javascript" src="/scripts/jquery-select2/select2.min.js"></script>
<script type="text/javascript" src="/scripts/jquery.jcarousel.pack.js"></script>
<script type="text/javascript" src="/scripts/jquery.cycle.all.js"></script>
<script type="text/javascript" src="/scripts/bootstrap-tab.js"></script>
<script type="text/javascript" src="/scripts/jquery-ui-1.9.1.custom.min.js"></script>-->

<%--<script type="text/javascript"     src="http://tcadops.ca/consumer/adtagtc.js"></script>--%>
<script type="text/javascript" src="/scripts/adtagtc_old.js"></script>

<!-- Smooth Div Scroll Plugin 
<script type="text/javascript" src="/scripts/jquery-ui-1.8.23.custom.min.js"></script>
<script type="text/javascript" src="/scripts/jquery.kinetic.js"></script>
<script type="text/javascript" src="/scripts/jquery.mousewheel.min.js"></script>
<script type="text/javascript" src="/scripts/jquery.smoothdivscroll-1.3-min.js"></script>
<script type="text/javascript" src="/scripts/bootstrap-datepicker.js"></script>
-->
<script type="text/javascript" src="//use.typekit.net/qrs7pfm.js"></script>
<script type="text/javascript">try { Typekit.load(); } catch (e) { }</script>
<!--<script type="text/javascript" src="/scripts/jquery.isotope.min.js"></script>-->
<script type="text/javascript" src="/scripts/jquery-fancybox/jquery.fancybox.pack.js"></script>

<meta name="viewport" content="width=1024" />

但它需要根据 .ascx.cs 文件中的语句更改为不同的 &lt;script&gt; 标签。如果在 if 语句中的 .ascx.cs 文件中使用,我将如何将上述代码更改为其他代码?

我想到了Response.Write,但是这段代码也有功能。也许有更好的方法来做到这一点?

【问题讨论】:

    标签: c# asp.net-4.0 head


    【解决方案1】:

    在您的 .ascx 文件中:

    <% if (someCondition) { %>
        <script>....</script>
    <% } 
    else { %>
        <script>(Some other script)</script>
    <% } %>
    

    然后在你的代码后面(ascx.cs)设置someCondition的值

    【讨论】:

    • 谢谢,我应该在 Page_Load 事件中设置someCondition 吗?
    • 您有一个左括号,但 if 语句中也没有右括号。才注意到这一点。这是正确的语法吗?
    • 哇..混合语言的方式...抱歉...现在好多了(我认为)
    • 好的,但是可以将 someCondition 放在 .ascx.cs 文件的 Page_Load 事件中吗?合适吗?
    • 是的,应该可以的。后台代码在页面渲染之前执行。
    【解决方案2】:

    由于您是动态加载的,因此请保持代码整洁并使用 ASP.Net 提供的约定。您可以在代码隐藏中执行此操作(如果您愿意,也可以在 ASCX 中)。

    ClientScriptManager s = Page.ClientScript;
    if(somecondition){
      s.RegisterClientScriptInclude("myscript", "[url to script file]");
    }else{
      s.RegisterClientScriptInclude("myscript", "[url to other script file]");
    }
    

    【讨论】:

    • 我很困惑它在哪里说"myscript" 到底应该是什么?任何事物??这些是否应该与 "myscript" 两次匹配?
    • 它是key。它唯一地标识您的脚本。请参阅 msdn.microsoft.com/en-us/library/2552td66(v=vs.110).aspx。键不必匹配,但不建议对同一个脚本引用或脚本块使用不同的键。我认为key 在页面加载期间频繁发生脚本生成的情况下很有用。它有助于防止重复。
    • 好的,谢谢。但是脚本文件的 URL 很可能在 .ascx 中,从这个意义上说可以吗?另外,我可以在那里做/the/path/MyScript.ascx 还是我必须这样做:http://www.mydomain.com/the/path/MyScript.ascx
    • 另外,不确定这是否重要,但在MasterMain.master 文件中,有这个位:&lt;%@ Register TagPrefix="mmg" TagName="ScriptControl" Src="~/controls/ScriptControl.ascx" %&gt;ScriptControl.ascx 是我的问题中提到的所有脚本引用的文件.我应该像您在该文件中一样将其删除并注册吗?如果是这样,那将如何运作?
    • 关于"URL to script file will most likely be in .ascx, is that ok?"。你可以,但我认为那真的很尴尬。为什么需要在 ASP.Net 用户控件中维护或引用客户端脚本?如果在本地范围内,我可以理解在 ascx 中维护客户端脚本,但仅限于这种情况。
    猜你喜欢
    • 2011-06-28
    • 2016-07-14
    • 1970-01-01
    • 2023-01-16
    • 2012-02-10
    • 2011-12-01
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多