9

How can/should I create some "custom control" in ASP.NET MVC 3? I have red about partial views, ViewUsersControl, Html.RenderAction, but I still don't know, which way is the proper MVC way for razor views.

If I need to render some ajax component to view, I can imagine to do it by partial view, but what if I want to render section with custom logic?

4

4 回答 4

21

1)部分视图

2)自定义 Html 助手

3) 子动作

更新 ASP.NET 核心:

2)标记助手比自定义 Html 助手更受欢迎

3)使用视图组件而不是子操作

于 2013-09-02T07:20:24.460 回答
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 请查看

于 2013-09-02T07:21:23.150 回答
1

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

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

链接到:

DisplayFor 和 EditorFor 模板

动作和渲染动作

于 2013-09-02T08:48:02.883 回答
0

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

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

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

您希望看到的链接很少

使用 Ajax 在 ASP.Net MVC3 Razor 中渲染部分视图

在 MVC3 中使用 JQuery 渲染局部视图

于 2013-09-02T07:29:27.820 回答