Asp.net mvc MVC中服务器控件的替代方案

Asp.net mvc MVC中服务器控件的替代方案,asp.net-mvc,servercontrols,Asp.net Mvc,Servercontrols,ASP.NET MVC中服务器控件的替代品是什么?我想做的是创建一个声明式和命令式绑定,这样我就可以编写 <cc1:MyControl Header="Some Header" Content="Some Content" /> 这意味着将创建MyControl类的实例,并可能呈现给 <h1>Some Header</h1> <p>Content</p> 某些标题 内容 我不想要任何viewstate或回发的废话,只是模块化。

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

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

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

<h1>Some Header</h1>
<p>Content</p>
某些标题
内容

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

我已经看到并了解了如何在ASP.NET MVC中使用服务器控件,但它们并没有提供足够的答案


编辑:我找到了答案。当我使用设计器添加用户控件时,它会自动创建一个我没有看到的控件。如果我简单地删除该标记,一切都会正常工作。

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


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

只需为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

_
公共函数MyControl(ByVal htmlHelper作为htmlHelper_
ByVal头作为字符串_
ByVal内容(作为字符串)作为字符串
使某人成为新的架线工
sb.AppendFormat(“{0}”,标题)
sb.AppendFormat(“{0}

”,内容) 把某人送回原处 端函数

或者,您可以创建一个更复杂的控件,如下面的示例所示:

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

  • -死链接
  • -死链接

更新:这个答案是针对2009年的ASP.Net MVC 1.0。在这一点上,它已经过时且不相关。

正如问题所述,我的问题是,每当我创建服务器控件时,表单都会被呈现,这是我不想要的。并非所有控件都是如此。这是特定控件的问题,而不是ASP.NET MVC。我测试的控件是空白控件(我创建了一个服务器控件项目,正在使用默认的ServerControl1进行测试)。我必须如何修改它来删除视图状态?我对它进行了测试,它在运行时不会生成任何表单标记或任何其他内容。但是,VS design view存在一个问题,当您将控件拖动到设计器表面时,它会创建一个标记。您可以在HTML模式下轻松删除表单标记。对不起,它太简单了。我希望我的用户能够使用VS2008设计器。请注意:您的两个链接都已断开。