2008-10-20 64 views
35

在MonoRail中,您可以使用CancelLayout()来不渲染布局。在ASP.NET MVC中,影响布局的唯一方法似乎是将布局名称传递到View()方法,如View(“myview”,“mylayout”);只有看起来传递null或空字符串不会做我想要的。禁用ASP.NET MVC中的布局?

我最终创建了一个空的布局,只是呈现内容,但这似乎很愚蠢。

“不渲染布局”就是这个意思。在Web表单视图引擎中,他们称布局为“母版页”。我想渲染只需我的动作的视图,并不包括它与主页面。

+0

如果你不能解释你正在寻找什么,你将不会得到任何其他答案。 “不呈现布局”是什么意思? – Will 2008-10-21 14:09:14

+0

这个问题对我来说很清楚。 – 2009-02-06 15:31:32

+0

必须创建一个空白布局可能看起来很愚蠢,但webforms引擎如何知道如何订购asp.net内容部分? 我觉得这是webforms viewengine所面临的问题。 – Min 2009-05-08 15:09:52

回答

1

似乎在ASP.NET MVC的版本,我问这是不可能的。

0

你可以创建一个自定义的ActionResult,它可以做任何事情。 ActionResult控制将什么发送回客户端作为响应。创建一个扩展ActionResult的类并不会带来任何好处。

+0

他不想要一个空的结果,他想要一个没有布局的结果。 – Matt 2008-10-21 13:41:55

+1

哇,这很有帮助。而一个自定义的ActionResult将无法做到这一点? – Will 2008-10-22 11:16:39

0

如果您不想渲染内容到输出流,只需从您的操作中返回一个EmptyResult而不是ViewResult。

+0

他不想要一个空的结果,他想要一个没有布局的结果。 – Matt 2008-10-21 13:42:40

+0

啊,那个编辑后来被添加了。 – 2008-12-16 21:16:49

0

您的视图是否需要拥有masterpage--它们是WebForms的可选功能?此外,你是否在你的视图中呈现HTML?

因为您的内容控件不一定按正确的顺序,所以在没有masterpage的情况下渲染一个写入masterpage的ASPX页面是没有意义的。

4

而不是使用普通视图,创建一个局部视图。这些可以单独使用,与CancelLayout()非常相似 - 或者您可以将它们合并到引用Master Page的视图中,在这种情况下,它将成为完整的布局。如果您想发送回部分HTML块以响应AJAX请求,它们也很有用。

65

在MVC 3,你可以删除主布局代码:

@{ 
    Layout = "";  
    } 
45

以现在的眼光开始补充一点:

@{ 
    Layout = null; 
} 

如果你想样式表来保持,则需要在该视图中添加引用。

6

要为所有的网页禁用此功能,请编辑_ViewStart.cshtml(根, '若干意见' 文件夹下),并确保它包含以下内容:

@{ 
    Layout = null; 
} 

并且为任何特定视图启用模板,可以将以下内容添加到。CSHTML文件该视图,以使模板:

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
2

没有任何运气尝试设置masterPage参数""null并返回一个View(像我没有)?

那就试试这个,用PartialView代替:

public ActionResult Article(string id) 
    { 
     return PartialView("~/Areas/Store/Views/CustomerService/" + id); 
    } 

我需要做的这个加载JS从异步视图的内容。

0

我在正确的答案看看它说:“这似乎是在ASP.NET MVC的版本,这是不可能的”

您正在使用哪个版本?因为我找到了解决办法(我有同样的问题),您的问题

因此,禁用布局的页面,你应该使用:

@{ 
    Layout = null; 
} 

而且,作为建议here,这可能会解决你的问题:

public ActionResult Index() 
{ 
    SampleModel model = new SampleModel(); 
    //Any Logic 
    return View("Index", "_WebmasterLayout", model); 
}