天道酬勤,学无止境

如何以编程方式向 contentPlaceHolder 添加内容?(How to programmatically add stuff to contentPlaceHolder?)

问题

我有一个母版页,我所有的页面都继承了它。 对于格式化,我想将一个页面与另一个页面不同的内容放在一个 ContentPlaceHolder 中。

现在,我如何将所有内容插入其中? 由于我计划用数据库中的内容填充 ContentPlaceHolder,因此我想我必须以编程方式进行。

  1. 如何向 ContentPlace Holder 添加控件? 我检查了其他答案,但无法通过其 ID 访问它。

  2. 我应该从一开始就使用多个 ContentPlaceHolders 吗? 假设我想放电影。 是否应该只有一个包含所有图像、描述和评级,还是每个内容都有一个 ContentPlaceHolder?

我对其他解决方案持开放态度,因为我没有使用 ASP 的经验。

回答1

老问题......但我刚刚遇到了这个问题,这是谷歌上不断出现的#1帖子,所以我想我会添加我的答案,因为其他人在我的情况下不起作用。

这是当常规<asp:Content不起作用时我是如何做到的(尽管在正常使用中,答案@JayC 是您如何做到的):

MasterPage 有这个ContentPlaceHolder

<asp:ContentPlaceHolder ID="ScriptsPlace" runat="server"></asp:ContentPlaceHolder>

必须从用户控件动态添加一些 JavaScript。 尝试直接使用ContentPlaceHolder会出现此错误:

解析器错误消息:内容控件必须是内容页或引用母版页的嵌套母版页中的顶级控件。

所以我想从代码隐藏中添加脚本。 这是.ascx文件的页面加载:

protected void Page_Load(object sender, EventArgs e)
{
    ContentPlaceHolder c = Page.Master.FindControl("ScriptsPlace") as ContentPlaceHolder;
    if (c != null)
    {
        LiteralControl l = new LiteralControl();
        l.Text="<script type=\"text/javascript\">$(document).ready(function () {js stuff;});</script>";
        c.Controls.Add(l);
    }
}

更新:所以事实证明我不得不在比我预期的更多的地方使用它,并最终使用了一种更灵活/可读的方式。 在用户控件本身中,我只是用常规div包装了 javascript 和任何其他需要移动的东西。

<div id="_jsDiv" runat="server">
    $(document).ready(function() {
         //js stuff
    });
    Other server controls or HTML junk
</div>

然后后面的代码会找到那个 div,然后将它移动到ContentPlaceHolder

protected void Page_Load(object sender, EventArgs e)
{
    ContentPlaceHolder c = Page.Master.FindControl("ScriptsPlace") as ContentPlaceHolder;
    HtmlGenericCOntrol jsDiv = this.FindControl("_jsDiv") as HtmlGenericControl;
    if (c != null && jsDiv != null)
    {
        c.Controls.Add(jsDiv);
    }
}

我实际上将此代码放在自定义用户控件中,并且我只是让我的常规用户控件继承自自定义用户控件,因此一旦我用<div id="_jsDiv" runat="server">包装了 javascript/etc,自定义用户控件负责其余部分,我不必在用户控件背后的代码中做任何事情。

回答2

通常发生的是

  1. 您使用适当的 html 和ContentPlaceHolder设置母版页
  2. 您根据该母版页创建页面。 如果您使用 Visual Studio,并告诉它基于现有母版页创建一个新页面,它将为您添加Content区域。
  3. 您将内容添加到新创建页面的内容区域。

如果您想动态地向母版(或任何)页面添加控件,您可以向任何现有控件添加控件。 如果它不应该以任何方式包装,只需添加一个Placeholder (它是一个 asp.net 控件)。

回答3

我喜欢这个

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<asp:Literal ID="jsstuff" runat="server"></asp:Literal>
</asp:Content>

这进入了后面的代码:

string stuff =  @"<script type=""text/javascript"">
                                        var searchBox = 0;
                                         var currentCountry = '';
                                         </script>";
                    jsstuff.Text = stuff;
回答4

如果内容页和母版页的命名空间不同,则在内容页的代码隐藏中无法访问内容页控件。

另外,请检查您的设计器文件。 如果控件未在设计器文件中列出,则删除该文件并重新创建(项目-> 转换为 Web 应用程序)

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • ASP.NET MVC-查看母版页,如何设置标题?(ASP.NET MVC - View with master page, how to set title?)
    问题 使用母版页时,为视图设置html标题(顶部)的首选方法是什么? 一种方法是在.aspx文件中使用Page.Title,但这在母版页中可能会与HTML代码混淆。 因此,假设没有服务器端控件,只有纯HTML。 还有更好的主意吗? 更新:我想在控制器或模型中不在视图中设置标题。 回答1 在母版页中,我们创建了一个“ init” ContentPlaceHolder和一个“ title” ContentPlaceHolder。 如果有人想以编程方式设置Page.Title,则可以在CSharp中的init占位符中进行设置,也可以使用标签覆盖“ title”占位符。 母版页 <asp:ContentPlaceHolder id="init" runat="server"></asp:ContentPlaceHolder> <head runat="server"> <asp:ContentPlaceHolder ID="title" runat="server"> <title><%=this.Page.Title%></title> </asp:ContentPlaceHolder> </head> 查看页面可以覆盖整个“标题”内容占位符: <asp:Content ID="Content1" ContentPlaceHolderID="title" runat="server">
  • 在C#中以编程方式添加元标记(Adding meta tag programmatically in C#)
    问题 我正在尝试以编程方式添加<meta> 。 当.aspx页中存在带有runat = "server"的Head元素时,它工作正常。 后面的代码是: HtmlMeta meta = new HtmlMeta(); meta.Name = "robots"; meta.Content = "noindex,follow"; this.Page.Header.Controls.Add(meta); 但是我的head标记中有一些脚本,其中包含<% ... %>类的代码块,因此我无法保持runat = "server"值。 问题是我必须以编程方式添加meta标记,因为它取决于数据库中的值。 有没有一种方法可以解决此问题,以便我head元素内的脚本照常工作,并且可以通过编程方式添加meta标签? 回答1 好的,我测试了veggerby的答案,它可以完美地工作: 在<header>部分中: <asp:PlaceHolder id="MetaPlaceHolder" runat="server" /> 请注意,Visual Studio可能会在PlaceHolder标记上显示警告,因为它没有被识别为标头内的已知元素,但是您可以忽略此警告。 有用。 在C#代码中: HtmlMeta meta = new HtmlMeta(); meta.Name = "robots"; meta.Content
  • 使用IE浏览时处理弹出窗口(Handle Pop-Up While Navigating with IE)
    问题 我有一个Excel VBA宏, 打开IE, 导航到Medicare网站, 登录我, 将网站上列出的索赔与工作簿中已经存在的索赔进行比较提醒我任何差异 在登录步骤中,我遇到了问题,因此,我在下面复制了该部分代码。 一旦执行.click行,就会出现一个弹出窗口,要求用户单击OK按钮以继续。 宏执行被暂停,直到我手动单击弹出窗口上的“确定”按钮为止。 在http://www.mymedicare.gov网页背后的源代码具有相对于弹出信息,但我一直无法弄清楚如何使用它,这样我可以编程方式单击弹出OK按钮。 在解决如何以编程方式单击弹出窗口的“确定”按钮方面的任何帮助将不胜感激。 注意:出于此问题的目的,可以使用任何用户名和密码。 如果您处理弹出窗口,您将被转到一个页面,上面写着诸如错误的用户名/密码之类的内容。 这表明您已经成功处理了弹出窗口。 Sub Medicare_Claims()' ' Update the status bar Application.StatusBar = "Running the Medicare Claims subroutine" ' Open the "MyMedicare web page Set ie = CreateObject("InternetExplorer.Application") With ie .Visible = True
  • 以编程方式在android中结束通话(End call in android programmatically)
    问题 我看到很多问题,无法在Android中以编程方式结束呼叫。 同时,我在googleplay市场上看到了许多拨号器应用程序,您可以在其中激活并挂断电话。 它们如何运作? 编辑:我读过某处我的应用程序必须是系统应用程序。 那么如何使其成为系统,系统和用户应用之间有什么区别? 回答1 您无需成为系统应用程序。 首先,在您的项目中创建包com.android.internal.telephony ,并将其放入名为“ ITelephony.aidl ”的文件中: package com.android.internal.telephony; interface ITelephony { boolean endCall(); void answerRingingCall(); void silenceRinger(); } 有了这些代码之后,就可以使用以下代码结束通话: TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); Class clazz = Class.forName(telephonyManager.getClass().getName()); Method method = clazz
  • 如何在母版页上使用JQuery?(How to use JQuery with Master Pages?)
    问题 只要不涉及母版页,我就可以使简单的示例正常工作。 我要做的就是单击一个按钮,并使用母版页在.js文件中用javascript告诉它“ hello world”。 任何帮助,非常感谢:) 回答1 编辑 正如@Adam在评论中指出的那样,有一个本机的jQuery机制与我最初的回答中的hack基本相同。 使用jQuery,您可以做 $('[id$=myButton]').click(function(){ alert('button clicked'); }); 我的黑客最初是作为ASP.NET的原型工作而开发的,我将其修改为原始答案。 请注意,jQuery基本上是在后台执行相同的操作。 不过,我还是建议使用jQuery方式来实现我的hack。 原始答案留给评论上下文 当您使用母版页时,ASP.NET会处理从属页上控件的名称。 您需要找出一种方法来找到向其添加处理程序的正确控件(假设您要使用javascript添加处理程序)。 我使用此功能来做到这一点: function asp$( id, tagName ) { var idRegexp = new RegExp( id + '$', 'i' ); var tags = new Array(); if (tagName) { tags = document.getElementsByTagName( tagName ); }
  • 更改导航ID以突出显示当前页面ASP.NET的编程解决方案(Programmatic solution to change navigation id to highlight current page ASP.NET)
    问题 我正在使用Visual Studio 2008和ASP.NET 3.5编写网站。 我设置了一个母版页,以简化布局并保留内容页面的内容,而不是内容和布局。 导航是列表,css使其看起来像一个栏。 为了突出显示栏上的页面,列表项需要看起来像这样<li id="current"> 。 如果可以避免,我不想使用<asp:ContentPlaceHolder> 。 是否可以将某些代码添加到我的每个页面(或仅添加到母版页面?)来完成此操作,还是我被困在<asp:ContentPlaceHolder>的代码上? 回答1 将一个属性添加到您的母版页称为页面节 public string PageSection { get; set; } 将MasterType页面指令添加到内容页面的顶部 <%@ MasterType VirtualPath="~/foo.master" %> 在后面的内容页面代码中,设置母版页的PageSection属性 Master.PageSection = "home"; 在您的母版页中,将body标签作为服务器标签 <body ID="bodyTag" runat="server"> 在后面的母版页代码中,使用该属性在body标签上设置一个类 bodyTag.Attributes.Add("class", this.PageSection)
  • 如何在python中将查询提交到.aspx页面(how to submit query to .aspx page in python)
    问题 我需要从.aspx网页中抓取查询结果。 http://legistar.council.nyc.gov/Legislation.aspx 该网址是静态的,那么如何向该页面提交查询并获得结果? 假设我们需要从相应的下拉菜单中选择“所有年份”和“所有类型”。 那里的某人必须知道如何执行此操作。 回答1 作为概述,您将需要执行四个主要任务: 向网站提交请求, 从站点检索响应解析这些响应在上面的任务中有一些逻辑可以迭代,并带有与导航相关联的参数(到结果列表中的“下一页”) http请求和响应处理是使用Python标准库的urllib和urllib2中的方法和类完成的。 可以使用Python的标准库的HTMLParser或其他模块(例如Beautiful Soup)来完成html页面的解析。 以下代码段演示了在问题指示的站点上请求和接收搜索的过程。 该站点由ASP驱动,因此,我们需要确保发送多个表单字段,其中一些表单字段具有“可怕”的值,因为ASP逻辑使用这些字段来维护状态并在某种程度上对请求进行身份验证。 确实是提交。 必须使用http POST方法发送请求,因为这是该ASP应用程序所期望的。 主要困难在于确定ASP期望的表单字段和关联值(使用Python获取页面是最容易的部分)。 直到我删除了大部分的VSTATE值,并可能通过添加注释引入了一两个拼写错误,这段代码才起作用
  • 如何确定从母版页显示哪个子页面?(How to determine which Child Page is being displayed from Master Page?)
    问题 我正在母版页上编写代码,我需要知道正在显示哪个子(内容)页面。 如何以编程方式执行此操作? 回答1 这听起来是个坏主意。 master 的想法是它不应该关心有哪个页面,因为这是每个页面的所有公共代码。 回答2 我用这个: string pageName = this.ContentPlaceHolder1.Page.GetType().FullName; 它以“ASP.default_aspx”这种格式重新调整类名,但我发现对于大多数用途来说这很容易解析。 希望有帮助! 回答3 最好让ContentPage通知MasterPage 。 这就是ContentPage具有Master属性而MasterPage没有Child属性的原因。 最好的做法是在MasterPage上定义一个属性或方法,并通过ContentPage的Master属性使用它。 如果您使用此技术,最好明确指定 MasterPage 的类名。 这使得在 ContentPage 中使用 MasterPage。 例子: //Page_Load MyMaster m = (MyMaster)this.Master; m.TellMasterWhoIAm(this); 希望这可以帮助。 回答4 我有理由检查母版页中的子页面。 我的母版页上有所有菜单选项,如果未设置某些系统设置,则需要禁用它们。 如果不是
  • 使用C#(.NET)以编程方式更改web.config(Change a web.config programmatically with C# (.NET))
    问题 如何使用C#以编程方式修改/操作web.config ? 我可以使用配置对象吗?如果可以,如何将web.config加载到配置对象中? 我想举一个完整的示例来更改连接字符串。 修改后,应将web.config写回到硬盘上。 回答1 这是一些代码: var configuration = WebConfigurationManager.OpenWebConfiguration("~"); var section = (ConnectionStringsSection)configuration.GetSection("connectionStrings"); section.ConnectionStrings["MyConnectionString"].ConnectionString = "Data Source=..."; configuration.Save(); 请参阅本文中的更多示例,您可能需要看一下模拟。 回答2 Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~"); ConnectionStringsSection section = config.GetSection("connectionStrings") as
  • ASP.NET母版页和内容页中的表单元素(Form Elements in ASP.NET Master Pages and Content Pages)
    问题 好的,我当前项目中的另一个坎bump。 我从来没有在我的两个主页和内容页的表单元素,我倾向于把所有形式的内容的相关指令。 但是,在当前项目中,我们有一个页面,他们需要两者。 右上方的登录表单和内容中的问题表单。 试图弄明白这一点之后,我遇到了ASP.NET的问题,抱怨在母版页中需要单个表单元素。 TBH,我真的不明白为什么这是ASP.NET的要求,但是,嘿。 有谁知道/是否/如何使母版页和内容页包含独立工作的表单元素? 如果没有,您能否提供有关如何继续获得所需外观/功能的建议? 回答1 以为我会回顾一些悬而未决的问题,看看是否可以解决其中的一些问题。 这是一个有趣的。 我完全拒绝相信您只能在ASP.NET页面上使用一种表单。 这对我来说毫无意义。 我已经看到很多网页在一个网页上具有多个表单,为什么ASP.NET页应该有所不同? 所以,这让我开始思考。 为什么ASP.NET页需要表单元素? ASP.NET页尝试通过PostBack模型提供状态持久性来模拟WinForms环境。 这为无状态环境提供了状态元素。 为此,运行时需要能够在每个“表单”中维护此状态。 它通过将数据回传到自身来实现。 重要的是要注意: 关于PostBack并没有真正的幻想。 它使用来自任何其他堆栈的HTTP形式和POST(与任何其他形式相同)。 仅仅因为看起来它可能正在做一些特别的事情,不是这样
  • 如何停止ASP.NET更改ID以使用jQuery(How to stop ASP.NET from changing IDs in order to use jQuery)
    问题 我的网页中有这个标签控件 <asp:Label ID="Label1" runat="server" Text="test"></asp:Label> 并且当页面呈现时,控件的id会变成这样 <span id="ctl00_ContentPlaceHolder1_Label3">test</span> 我怎样才能阻止asp.net更改ID以执行这样的jQuery操作 $('#label1').html(xml); 回答1 而不是使用这个选择器 $('#Label1') 使用这一代码,基本上您正在使用经典的ASP内联服务器端代码。 $('#<%= Label1.ClientID %>') 这将插入生成的任何ID作为文字放置。 如果您希望使用外部文件,则建议您在页面上创建一个全局obj,以保存所有客户端ID,然后在外部文件中引用该obj(不理想,但这是一个解决方案) var MyClientIDs = { Label1 = '<%= Label1.ClientID %>', Label2 = '<%= Label2.ClientID %>', Textbox1 = '<%= Textbox1.ClientID %>', Textbox2 = '<%= Textbox2.ClientID %>' }; 然后在您的外部文件中,您可以访问Label1,例如: $('#' +
  • 在某些页面上禁用ScriptManager(Disable ScriptManager on certain pages)
    问题 我的母版页上有一个脚本管理器。 我需要从其中删除一个或2个内容页面,因为这会导致页面上其他JavaScript出现问题 如何在这些页面上禁用脚本管理器? ScriptManager对象似乎没有任何看起来像它们可以完成工作的属性 这可能吗? 回答1 将您的<asp:ScriptManager />移至自定义控件,例如MyScriptManager.ascx-.ascx文件中的唯一代码将是ScriptManager标记-然后您可以在自定义控件上设置Visible属性,以控制是否呈现ScriptManager。 <foo:MyScriptManager id="scriptManager" runat="server" Visible="false" /> 您甚至可以向您的母版页添加一个属性,您可以在内容页中使用该属性来显示/隐藏ScriptManager: // In your master page public bool ShowScriptManager {get; set;} // In your master page's Page_Load private void Page_Load(object sender, EventArgs e) { ... scriptManager.Visible = ShowScriptManager; ... }
  • 如何以编程方式向 AppleWatch 添加标签?(How to add a label to AppleWatch programmatically?)
    问题 我是 AppleWatch 开发的新手,但我发现我无法以编程方式向 AppleWatch 屏幕添加标签(或按钮)。 我所能做的就是通过故事板添加资产。 我可以问如何以编程方式向屏幕添加标签或按钮吗? 以及如何在屏幕上将它们的位置设置为 x 和 y? 首选目标 C 解决方案。 谢谢! 回答1 你不能。 Apple Watch 开发中的视图层次结构在编译时在故事板中静态声明。 如果您希望标签有条件地可见,请将其放在故事板中并将其设置为隐藏。 然后可以在运行时以编程方式取消隐藏视图。
  • 如何以编程方式向视图添加视图(How to Programmatically Add Views to Views)
    问题 假设我有一个LinearLayout ,我想在Java程序中为其添加一个View。 为此使用什么方法? 我并不是在问它是如何在XML中完成的,我确实知道,但是我如何才能按照此示例代码的方式进行操作? (One View).add(Another View) 就像在Swing中一样。 回答1 调用addView是正确的答案,但是您需要做更多的工作才能使其工作。 如果您通过构造函数创建了一个View(例如Button myButton = new Button(); ),则需要在新建的View上调用setLayoutParams ,并传入父视图的LayoutParams内部类的实例,然后再添加新构造的孩子到父视图。 例如,假设您的LinearLayout的ID为R.id.main onCreate()函数中可能包含以下代码: LinearLayout myLayout = findViewById(R.id.main); Button myButton = new Button(this); myButton.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); myLayout
  • 如何在数据绑定时以编程方式向 datagridview 添加一行?(How to programmatically add a row to a datagridview when it is data-bound?)
    问题 如果绑定到数据源(数据表),如何向 datagridview 控件添加一行? 谢谢! 回答1 在数据表中添加一行,datagridview 会自动更新: DataTable dt = myDataGridView.DataSource as DataTable; //Create the new row DataRow row = dt.NewRow(); //Populate the row with data //Add the row to data table dt.Rows.Add(row); 回答2 创建一个与要在网格中显示的数据相对应的类(相同的属性) 在您的数据绑定函数中,获取您的查询结果,但将结果放在一个列表中(或任何适合您和数据绑定的 IEnumerable) 根据您的需要创建另一个对象并将其添加到您的列表中绑定列表 回答3 // 我操作了一个绑定列表。 在这里,我按顺序向下移动一行。 BindingList<MyType> lst = (BindingList<MyType>)DataGridView.DataSource; MyType objQcc = lst[rowIndex]; lst.Insert(rowIndex + 2, objQcc); lst.RemoveAt(rowIndex); 回答4 如果我尝试将行添加到 datagridview
  • 以编程方式向导航控制器添加自动布局约束(Adding autolayout constraints to navigation controller programmatically)
    问题 我正在尝试向在导航栏上添加的 UI 标签添加约束。 UI 标签显示正在运行的计时器 这是我的代码, self.label = [[UILabel alloc] initWithFrame:CGRectMake(550, 15, 150, 14)]; self.label.text = @"Label"; [self.label setTranslatesAutoresizingMaskIntoConstraints:NO]; [self.navigationController.navigationBar addSubview:self.label]; [self.navigationController.navigationBar addConstraint:[NSLayoutConstraint constraintWithItem:self.label attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.navigationController.navigationBar attribute:NSLayoutAttributeTrailing multiplier:1.0f constant:-20.0f]]; 但是我在运行应用程序时收到错误
  • 如何以编程方式向其中添加JS和CSS资源 ?(How to programmatically add JS and CSS resources to <h:head>?)
    问题 我需要以编程方式向JSF页面的<h:head>添加JS和CSS资源。 目前尚不清楚如何实现这一目标。 有人可以提供提示或启动示例吗? 回答1 这取决于您到底想在哪里声明资源。 通常,以编程方式声明它们的唯一原因是您拥有一个自定义的UIComponent或Renderer,它会生成HTML代码,而这些代码又需要这些JS和/或CSS资源。 然后由@ResourceDependency或@ResourceDependencies声明它们。 @ResourceDependency(library="mylibrary", name="foo.css") public class FooComponentWithCSS extends UIComponentBase { // ... } @ResourceDependencies({ @ResourceDependency(library="mylibrary", name="bar.css"), @ResourceDependency(library="mylibrary", name="bar.js") }) public class BarComponentWithCSSandJS extends UIComponentBase { // ... } 但是,如果您确实需要在其他地方声明它们
  • SharePoint:如何以编程方式将项目添加到自定义列表实例(SharePoint : How can I programmatically add items to a custom list instance)
    问题 我真的在寻找一个小的代码片段,或者一个关于这个主题的好教程。 我有一个 C# 控制台应用程序,我将使用它以某种方式将列表项添加到我的自定义列表中。 我也创建了自定义内容类型。 所以不确定我是否也需要从这个内容类型创建一个 C# 类。 也许不是。 提前致谢 回答1 我认为这两篇博文应该可以帮助您解决问题。 http://blog.the-dargans.co.uk/2007/04/programmatically-adding-items-to.html http://asadewa.wordpress.com/2007/11/19/adding-a-custom-content -type-specific-item-on-a-sharepoint-list/ 短途游: 获取要将项目添加到的列表实例。 向列表中添加一个新项目: SPListItem newItem = list.AddItem(); 要将新项目绑定到内容类型,您必须为新项目设置内容类型 ID: newItem["ContentTypeId"] = <Id of the content type>; 设置在您的内容类型中指定的字段。 提交您的更改: newItem.Update(); 回答2 简单来说,您需要按照步骤操作。 您需要将Microsoft.SharePoint.dll引用到应用程序。
  • 如何在Android中以编程方式向主屏幕添加快捷方式(How to add shortcut to Home screen in android programmatically [duplicate])
    问题 这个问题已经在这里有了答案: Android在主屏幕上创建快捷方式(10个答案) 7年前关闭。 当我开发一个android应用程序时出现了这个问题。 我想分享我在开发过程中收集到的知识。 回答1 Android为我们提供了一个意图类com.android.launcher.action.INSTALL_SHORTCUT ,可用于将快捷方式添加到主屏幕。 在以下代码段中,我们创建了活动MainActivity的快捷方式,其名称为HelloWorldShortcut。 首先,我们需要向Android清单xml添加权限INSTALL_SHORTCUT 。 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> addShortcut()方法在主屏幕上创建一个新的快捷方式。 private void addShortcut() { //Adding shortcut for MainActivity //on Home screen Intent shortcutIntent = new Intent(getApplicationContext(), MainActivity.class); shortcutIntent.setAction(Intent.ACTION
  • 如何以编程方式向项目添加现有项?(How to Add an Existing Item to a Project Programmatically?)
    问题 如何以编程方式将项目添加到项目? 类似于 public void AddExistingItem(string projectPath, string existingItemPath) { //I'm making up the Project class here as an example Project p = new Project(projectPath); p.AddExistingItem(existingItemPath); } 我想模仿Visual Studio的“添加现有项”功能。 回答1 添加对EnvDTE.dll的引用,然后使用ProjectItems.AddFromFile方法如您在此页面上所读,如果您添加对EnvDTE.dll的引用,则必须将程序集的Embed Interop Types属性设置为false 回答2 VisualStudio项目只是一个XML文件,因此您可以使用XDocument或XmlDocument打开它并进行编辑。 回答3 尝试这样的事情: public void createProjectItem(DTE2 dte) { //Adds a new Class to an existing Visual Basic project. Solution2 soln; Project prj; soln = (Solution2