我希望在我的应用程序中有2个单独的布局.假设一个是网站的公共部分,另一个是会员方面.
为简单起见,我们可以说每个站点的所有逻辑都整齐地包含在2个不同的控制器中.
并且它们每个都具有相应的布局,用于每个视图下的所有视图.
如何使用_ViewStart.cshtml文件指定"Public"下的所有View/Action使用PublicLayout,"Staff"下的所有内容都使用StaffLayout?
谢谢!
所以,标题应该说明一切.
要在ASP.NET MVC中创建可重用的组件,我们有3个选项(可能是其他我没有提到的):
局部视图:
@Html.Partial(Model.Foo, "SomePartial")
Run Code Online (Sandbox Code Playgroud)
自定义编辑模板:
@Html.EditorFor(model => model.Foo)
Run Code Online (Sandbox Code Playgroud)
自定义显示模板:
@Html.DisplayFor(model => model.Foo)
Run Code Online (Sandbox Code Playgroud)
就实际的View/HTML而言,所有三种实现都是相同的:
@model WebApplications.Models.FooObject
<!-- Bunch of HTML -->
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是 - 你何时/如何决定使用三者中的哪一个?
我真正想要的是在创建问题之前要问自己的问题列表,其答案可用于决定使用哪个模板.
以下是我使用EditorFor/DisplayFor找到的2件更好的东西:
它们在呈现HTML帮助程序时尊重模型层次结构(例如,如果在"Foo"模型上有"Bar"对象,则"Bar"的HTML元素将使用"Foo.Bar.ElementName"呈现,而部分将具有"的ElementName").
更强大,例如,如果你List<T>在ViewModel中有一些东西,你可以使用@Html.DisplayFor(model => model.CollectionOfFoo),而MVC足够聪明,可以看到它是一个集合,并为每个项目渲染单个显示(而不是Partial,这需要一个明确的环).
我也听说DisplayFor呈现了一个"只读"模板,但我不明白 - 我不能在那里扔一个表格吗?
有人能告诉我一些其他原因吗?是否有一个列表/文章比较这三个?
asp.net-mvc asp.net-mvc-partialview editortemplates razor asp.net-mvc-3
HTML.ActionLinkvs 之间有什么区别,Url.Action或者只是两种方式做同样的事情?
我什么时候应该更喜欢一个?
如何在ASP.NET MVC中提供favicon.ico的最终/最佳建议是什么?
我目前正在做以下事情:
在RegisterRoutes方法的最开头添加一个条目:
routes.IgnoreRoute("favicon.ico");
Run Code Online (Sandbox Code Playgroud)将favicon.ico放在我的应用程序的根目录中(这也将是我的域的根目录).
我有两个问题:
Content和他们处于同一水平的地方真是太狡猾了Controllers.这个IgnoreRoute("favicon.ico")陈述是否足够 - 或者我应该如Phil Haack的博客文章中所讨论的那样做.我不知道曾经在根目录以外的任何目录中看到过favicon.ico的请求 - 这会使这个变得不必要(但知道如何去做是很好的).
routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
Run Code Online (Sandbox Code Playgroud)Razor默认编码字符串.没有编码的渲染是否有任何特殊语法?
我有一个接受输入的textarea控件.我想稍后通过简单地使用以下方法将该文本呈现为视图:
@ Model.CommentText
这适当地编码任何值.但是,我想用换行换字符,<br />我找不到一种方法来确保新的br标签不被编码.我尝试过使用HtmlString,但还没有运气.
我正在尝试找出正确的Razor语法,以便将特定*.cshtml的JavaScript文件与_Layout.cshtml中定义的所有其他包含文件一起放在head标记中.
我今天正在写我的第一个剃刀页面,无法弄清楚如何进入 #if debug #else #endif
如何在剃刀中输入预处理器?
据我所知,在Razor中,@ Html做了很多简洁的事情,比如为链接,输入等生成HTML.
但我没有得到DisplayFor功能......
我为什么要写:
@Html.DisplayFor(model => model.Title)
Run Code Online (Sandbox Code Playgroud)
什么时候我可以写:
@Model.Title
Run Code Online (Sandbox Code Playgroud) 我需要创建一个只在一个cshtml文件中必需的函数.您可以将我的情况视为ASP.NET页面方法,它是在页面中实现的最小Web服务,因为它们的范围限定为一个页面.我知道HTML帮助器(扩展方法),但我的功能只需要一个cshtml文件.我不知道如何在视图中创建函数签名. 注意:我正在使用Razor模板引擎.
razor ×10
asp.net-mvc ×9
asp.net ×2
.net ×1
c# ×1
favicon ×1
include ×1
javascript ×1
layout ×1
preprocessor ×1