如何在ASP.NET MVC中创建可重用控件

时间:2013-09-02 07:13:27

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

我怎么能/应该在ASP.NET MVC 3中创建一些“自定义控件”?我对部分观点感兴趣,ViewUsersControlHtml.RenderAction,但我仍然不知道,哪种方式是适合剃刀观看的MVC方式。

如果我需要渲染一些ajax组件来查看,我可以想象通过局部视图来做,但是如果我想用自定义逻辑渲染节呢?

4 个答案:

答案 0 :(得分:21)

1)PartialViews

2)Custom Html helpers

3)儿童行为

更新ASP.NET Core:

2)Tag Helpers是自定义Html助手

的首选方式

3)使用View Components代替Child Actions

答案 1 :(得分:8)

您可以使用

@{Html.RenderPartial("YourCustomView",YourModel);}

例如,在您的Shared文件夹中创建一个新的View并将其命名为"_MyCustomControl"

然后在代码中写道:

@model YourNameSpace.Models.YourModel

@{
    Layout = null;
}

@*Here write your control's markup*@

然后在你想要使用此"control"的视图中添加:

@{Html.RenderPartial("_MyCustomControl",new YourModel { args });}

如果您遇到RenderPartial check this out

的问题

答案 2 :(得分:1)

除了这篇文章的所有其他答案,我还可以为您提供EditorFor和DisplayFor模板的使用。当您想要轻松渲染或编辑自定义类型时,这些功能非常有用。它会很好地处理验证(使用部分时可能会很奇怪)并且你可以递归地嵌套它们(再次是另一个在你需要它之​​前不太方便的功能)。

您还可以使用Html.RenderAction()Html.Action()在视图中调用其他控制器操作,并在页面中以内嵌方式显示结果。这可能是最接近你需要的,因为它允许你在控制器中渲染部分包含代码,并且它还允许传递参数。

链接至:

DisplayFor and EditorFor Templates

Action and RenderAction

答案 3 :(得分:0)

正如您所提到的,您可以使用部分视图。 是的,您可以使用部分视图,这是最有效和最有效的方式。

对于Ajax渲染,您始终可以使用

     @using (Ajax.BeginForm("Details", new { id = Model.Post.PostId }, new AjaxOptions    
  {

您希望看到的链接很少

Rendering partial view in ASP.Net MVC3 Razor using Ajax

Render Partial Views using JQuery in MVC3