小编Jas*_*onH的帖子

c# - 在div id上使用FindControl时出错

我有一个ASP.NET站点,我试图通过C#代码隐藏文件中的ID访问div元素.基本上我想看看是否存在div元素,如果存在,则改变其属性.

我发现很多资源都指向了十几种不同的解决方案,而且似乎都没有.

ASP.Net页面上的HTML:

<div class="contentArea">
     <div class="block" id="button1" runat="server">
            Some Content Here
     </div>
     <div class="block" id="button2" runat="server">
            Some Content Here
     </div>
     <div class="block" id="button3" runat="server">
            Some Content Here
     </div>
</div>
Run Code Online (Sandbox Code Playgroud)

C#代码背后(我尝试过的例子):

System.Web.UI.HtmlControls.HtmlGenericControl div1 = (System.Web.UI.HtmlControls.HtmlGenericControl)this.FindControl("button1");
div1.Attributes["class"] = "classNameHere";
Run Code Online (Sandbox Code Playgroud)

要么

Control div1 = this.FindControl("button1");
div1.GetType();
Run Code Online (Sandbox Code Playgroud)

当代码到达上述每个示例的第二行时,我收到一个错误:

你调用的对象是空的.

如果我尝试以下方法:

if (div1 != null)
{
    // Do Something;
}
Run Code Online (Sandbox Code Playgroud)

什么都没发生,因为div1总是设置为null.具有讽刺意味的是,如果我查看Locals窗口并检查它,我可以在列表中看到按钮#id,所以我知道它们在那里,但是系统表现得好像没有找到控件.

我的最终目标是找到按钮div的最大ID#(查看我的html示例,最大ID将是3(button3).也许有更好的方法去做,但无论哪种方式,一旦我有我的max id,我希望能够触及每个div并改变一些css属性.

虽然我可以通过jQuery轻松完成所有这些操作,但在本例中我需要在C#中执行此操作.

任何帮助深表感谢.如果您需要更多信息,请告诉我们.

更新 我从头开始创建一个新的C#Web项目.添加母版页(而不是更改母版页)并使用母版页添加网页表单后,我只在内容ID ="Content2"下的网络表单中添加了一行:

<div id="button1"></div>
Run Code Online (Sandbox Code Playgroud)

从c#代码背后我仍然遇到与以前完全相同的问题.

最后的更新和答案 我很震惊没有人(包括我自己)从上述更新中抓住了我的错误.当我在div下从头开始创建一个新项目时,我从未放过runat ="server".以下是我从头开始在新项目中解决问题的方法:

将runat ="server"添加到div:

<div id="button1" runat="server"></div>
Run Code Online (Sandbox Code Playgroud)

然后我在MasterPage下的ContentPlaceHolder上做了一个FindControl:

ContentPlaceHolder myPlaceHolder = (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1"); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net findcontrol

8
推荐指数
1
解决办法
4万
查看次数

MVC4 DropDownListFor对象引用未设置为对象的实例

我准备好解决这个问题.我是MVC的新手,但对它已经很熟悉了.

我试图在视图上放置一个下拉列表,但在调用DropDownListFor的行上不断获得"对象引用未设置为对象的实例".这就是我所拥有的:

模型

public class UserModel
{
    public class DietObject
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    public IEnumerable<DietObject> DietOptions = new List<DietObject>
    {
        new DietObject { Id = 0, Name = "Meat" },
        new DietObject { Id = 1, Name = "Vegetarian" }
    };

    [Required]
    [StringLength(15)]
    [Display(Name = "Diet:")]
    public string Diet { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

调节器

    [HttpGet]
    public ActionResult Registration()
    {
        return View();
    }
Run Code Online (Sandbox Code Playgroud)

视图

    <div class="fHeader">
        <%: …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc html.dropdownlistfor asp.net-mvc-4 dropdownlistfor

6
推荐指数
1
解决办法
9467
查看次数