关于asp.net mvc 3:在代码MVC Razor中渲染部分视图

Rendering Partial View in code MVC Razor

我正在使用MVC 3 Razor来制作一个简单的CMS用于实践,我的想法是创建一些局部视图。

我想做一个数据库查找,并看到3个部分视图需要呈现到页面。

我该怎么做?在webforms中,您调用loadcontrol(controlurl),但在这里我看不到等效的。

这会是客户方面的事情吗?

编辑-我更想从模型中获取视图名称,然后渲染该视图,而不是事先知道视图的名称。所以一个页面可能有一个名为foo的视图或者一个名为bar的视图。模型在运行时会告诉控制器要呈现哪个视图。


有两种方法可用于呈现"控件"。

1
2
@Html.Partial("ViewName")
@{ Html.RenderPartial("ViewName"); }

也可以渲染其他操作。

1
2
@Html.Action("ActionName","Controller", new { Values ="yourvalues" })
@{ Html.RenderAction("ActionName","Controller", new { Values ="yourvalues" }); }

注意,每个字符串中的第二个被@{ }包围,这是因为它们不返回字符串,而是直接呈现到流中。


另外,考虑@Html.Action()而不是部分观点。


另一种方式

1
@RenderPage("~/Views/Shared/LeftMenu.cshtml")

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Html.RenderPartial("partialview name", Model.class, new ViewDataDictionary { TemplateInfo = new TemplateInfo { HtmlFieldPrefix ="classname" } });

This code can be used to render the partial view in apge.
HTMLfiledprefix is defined to keep the data available in the model

You can use tis code to load a partial view on a button event using ajax
 function partialview() {
        var url = '@Url.Action("action","controller")';
        var data = $('#frm').serialize();
(to serialize the data in the model before posting to the action)
        var finaldata = data;
        $.ajax({
            type:"post",
            url: url,
            data: finaldata,
            async: false,
            contentType:"application/json; charset=utf-8",
            error: function (xhr) {
                errorRedirecttoErrorController(xhr.error);
            },
            success: function (data) {
                $("#DIVID").html(data);
(div to which the partial view to be loaded)
            }
        });
    }