在ASP.NET MVC中构建视图层次结构的最佳方法是什么?

时间:2016-06-17 09:35:02

标签: asp.net asp.net-mvc

我目前正在将ASP.NET webforms解决方案转换为MVC。

在webforms中,除了site.master之外,我们还有母版页,我们保留每个部分的公共代码和头部导入。所以正常的页面继承是这样的:

Site.master -> section.Master -> page.aspx

在MVC中,我不清楚将代码放在哪一部分。将部分内容拆分为部分视图是唯一的解决方案吗?它变成了?

Layout.cshtml -> page.cshtml -> any-number-of-partial-views

举一个例子,如果我需要在所有10个部分页面中共享一个CSS文件,我可以将其放在部分视图中并在每个页面上呈现它,但感觉效率不高。或许我只需要了解这种新的工作方式。

2 个答案:

答案 0 :(得分:0)

您也可以在MVC中使用sections

在您的required中,您可能会遇到以下情况:

@section testSection{

    <h1>Test</h1>

}

在您的子视图中,您可以指定本节中应呈现的HTML,或者您可以将它们全部放在一起,因为TEMA已设置为false:

    //initialization
    double[] outRes = new double[array.length];
    MInteger begin = new MInteger();
    MInteger length = new MInteger();

    //library call
    Core c = new Core();
    RetCode retCode = c.tema(0, array.length - 1, array, period, begin, length, outRes);

    //result handling
    if (retCode == RetCode.Success) {
        return outRes;
    } else {
        System.out.println("Error in TEMA calculation");
        return null;
    }

答案 1 :(得分:0)

如果你想在几个地方重复使用代码,那么部分视图就是你的好朋友。

您可以在视图&gt;中放置部分视图ControllerNameAsFolderName&gt;查看页面(放在此处)仅在相同的控制器视图中使用,甚至在共享文件夹内使用全局。

section是另一种选择,就像UserControl(在网络表单中)。在布局页面上创建部分参考@RenderSection("sectionName", required:false),并在

等视图页面上使用它
@section sectionName{
    <div>content goes here</div>
}

假设您想在视图页面的<head>内放置一些内容(例如元信息),在这种情况下,您可以在section页面中创建_Layout.cshtml,然后使用{{1}在视图页面上。

通过这种方式,您可以将代码从任何页面放置在DOM结构中的特定位置。 section有一个很棒的功能,可以将其标记为section