MVC中服务器控件的替代方案

时间:2009-04-08 17:35:32

标签: asp.net-mvc servercontrols

ASP.NET MVC中服务器控件的替代品是什么?我想要做的是创建一个声明性和命令式绑定,以便我可以编写

<cc1:MyControl Header="Some Header" Content="Some Content" />

这意味着将创建MyControl类的实例并可能呈现为

<h1>Some Header</h1>
<p>Content</p>

我不想要任何viewstate或postback crap,只需要模块化。我还希望这些模块包含在一个单独的类库中,因此ViewUserControls不会对我有用。以正常方式使用服务器控件可以正常工作,但它会生成一个表单标记和一个viewstate字段,如果我可以避免它,我就不想要了。

我看过this questionthis one关于如何在ASP.NET MVC中使用服务器控件,但它们没有提供足够的答案。

编辑:我找到了答案。当我使用设计器添加用户控件时,它会自动创建一个&lt; form&gt;我错过了。如果我只是删除该标签,一切都很完美。

3 个答案:

答案 0 :(得分:2)

如果不需要以服务器形式呈现,您仍然可以在ASP.NET MVC中使用所有控件

ascx个文件和@Register指令仍然运行良好。最新的事情是Html.RenderPartial方法,它允许您将模型对象传递给局部视图(ascx)并相应地进行渲染。

答案 1 :(得分:0)

只需再添加一个 Mehrdad 答案的可能性,您就可以使用扩展方法来执行这样的简单控制:

<%= html.MyControl( "Some header", "Some content" ) %>


<Extension()> _
Public Function MyControl(ByVal htmlHelper As HtmlHelper, _
                         ByVal Header As String, _
                         ByVal Content As String) As String

Dim sb As New StringBuilder()
sb.AppendFormat("<h1>{0}</h1>", Header)
sb.AppendFormat("<p>{0}</p>", Content)
Return sb.ToString()
End Function

或者你可以像这个例子那样进行更复杂的控制:Create an ASP.NET MVC GridView Helper Method

答案 2 :(得分:0)

除了仍然可以使用ASP.Net MVC的控件之外,您还可以使用mvc控件。

更新:这个答案是针对2009年的ASP.Net MVC 1.0。它已经过时且无关紧要。