在ASP.NET MVC 4 HtmlHelpers中呈现ASP.NET web控件

在ASP.NET MVC 4 HtmlHelpers中呈现ASP.NET web控件,asp.net,asp.net-mvc-4,razor,Asp.net,Asp.net Mvc 4,Razor,我正在ASP.NET MVC 4中创建自定义HtmlHelper,它需要呈现ASP.NET标准web控件,如或。我的意思是:从我的HtmlHelper,我希望我的浏览器将它们呈现为与ASP.NET web表单应用程序相同的内容 我在网上搜索这个话题,但没有找到任何具体的东西可以帮助我实现这一点 如果有人知道这是如何实现的,或者有过这方面的经验,请分享:)如果有人有类似的问题或者想知道如何实现,这是我的代码 public static MvcHtmlString Panel(this HtmlHe

我正在ASP.NET MVC 4中创建自定义HtmlHelper,它需要呈现ASP.NET标准web控件,如
。我的意思是:从我的HtmlHelper,我希望我的浏览器将它们呈现为与ASP.NET web表单应用程序相同的内容

我在网上搜索这个话题,但没有找到任何具体的东西可以帮助我实现这一点


如果有人知道这是如何实现的,或者有过这方面的经验,请分享:)

如果有人有类似的问题或者想知道如何实现,这是我的代码

public static MvcHtmlString Panel(this HtmlHelper html)
{
            Panel pnl = new Panel();
            pnl.ID = "mainPanel";
            pnl.BorderStyle = BorderStyle.Solid;
            pnl.BorderWidth = Unit.Pixel(1);
            pnl.BorderColor = System.Drawing.Color.Black;

            Label lblTitle = new Label();
            lblTitle.Text = "Title";
            TextBox txtTitle = new TextBox();
            txtTitle.ID = "txtTitle";
            lblTitle.Attributes.Add("for", "txtTitle");

            Label lblMessage = new Label();
            lblMessage.Text = "Message";
            TextBox txtMessage = new TextBox();
            txtMessage.TextMode = TextBoxMode.MultiLine;
            txtMessage.ID = "txtMessage";

            Label lblDepartment = new Label();
            lblDepartment.Text = "Department";
            DropDownList lstDepartment = new DropDownList();
            lstDepartment.ID = "lstDepartment";
            ListItemCollection collection = new ListItemCollection();
            collection.Add(new ListItem("Department1"));
            collection.Add(new ListItem("Department3"));
            collection.Add(new ListItem("NoDepartment"));

            lstDepartment.DataSource = collection;
            lstDepartment.DataBind();

            pnl.Controls.Add(lblTitle);
            pnl.Controls.Add(txtTitle);
            pnl.Controls.Add(lblMessage);
            pnl.Controls.Add(txtMessage);
            pnl.Controls.Add(lblDepartment);
            pnl.Controls.Add(lstDepartment);

            HtmlTextWriter writer = new HtmlTextWriter(new StringWriter());
            pnl.RenderControl(writer);

            return MvcHtmlString.Create(writer.InnerWriter.ToString());
}

基本上,您使用所需的web控件类并创建
HTML
HtmlTextWriter
用于呈现为此目的而编写的内容。

ASP.NET MVC
中,没有任何控件类似于
服务器端控件。不要将
ASP.NET web表单
ASP.NET MVC
@wiz kid连接我知道MVC不使用服务器端控件。我只是在寻找一种方式,让我的浏览器能够像创建ASP.NET web表单时那样呈现这些表单。我想你要求的是一个ASP:按钮的等价物。MVC中没有@html.button。为此,您需要使用Html按钮。有关更多信息,请参阅本页。不,正如我所写的,我在问如何生成标准的web控件。无论如何,我找到了一个解决方法:)谢谢你的帮助伟大的一个,很快就会尝试!!