在代码中看不到对应的控件

时间:2011-12-25 11:31:40

标签: c# asp.net asp.net-mvc-3

我在asp.net mvc3(非razor)项目的Site.Master中有类似的东西:

<telerik:RadRibbonBar ID="RadRibbonBar1" runat="server">

后面的代码定义如下:

<%@ Master Language="C#" Inherits="myproject.Site_Master" CodeFile="Site.Master.cs" %>

所以Site.Master.cs是:

using System.Web.Mvc;
using System;

namespace myproject
{
    public partial class Site_Master : ViewMasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}

如何从Page_loaded访问radribbonbar1(一旦页面加载就会调用它)。

我给它的印象是给它一个ID,它可以通过C#代码自动生成,但是没有发生(没有变量radribbonbar1可用于Site_master)。

有关如何使这项工作的任何想法?

2 个答案:

答案 0 :(得分:2)

服务器控件无法正常工作,因为它们需要事件处理,这是ASP.NET MVC中没有的。请参阅jQuery ribbon plugin

答案 1 :(得分:1)

没有用你的例子测试这个,但是这样的东西可能会起作用

public static Control FindControlRecursive(Control root, string id)
{
    return root.ID == id ? root : (from Control c in root.Controls select FindControlRecursive(c, id)).FirstOrDefault(t => t != null);
}

并且,在你的page_load中

RadRibbonBar radRibbonBar1 = (RadRibbonBar)FindControlRecursive(Page, "RadRibbonBar1");