0

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

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

这意味着 MyControl 类的一个实例将被创建并可能呈现给

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

我不想要任何视图状态或回发废话,只是模块化。我还希望这些模块包含在一个单独的类库中,所以 ViewUserControls 不会为我做。以正常方式使用服务器控件是可行的,但它会生成一个表单标记和一个视图状态字段,如果可以避免的话,我不想要它。

我已经看到了这个问题这个关于如何在 ASP.NET MVC 中使用服务器控件的问题,但它们没有提供足够的答案。

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

4

3 回答 3

2

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

ascx文件和@Register指令仍然可以很好地工作。伟大的新事物是Html.RenderPartial允许您将模型对象传递给局部视图 ( ascx) 并使其相应呈现的方法。

于 2009-04-08T17:38:35.277 回答
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

或者你可以像这个例子一样制作一个更复杂的控件:创建一个 ASP.NET MVC GridView Helper Method

于 2009-04-08T17:51:06.823 回答
0

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

更新:此答案适用于 2009 年的 ASP.Net MVC 1.0。此时它已过时且无关紧要。

于 2009-04-12T09:34:48.017 回答