标签: razor

如何在ASP.NET MVC 3 razor ViewStart文件中指定不同的布局?

我希望在我的应用程序中有2个单独的布局.假设一个是网站的公共部分,另一个是会员方面.

为简单起见,我们可以说每个站点的所有逻辑都整齐地包含在2个不同的控制器中.

  • PublicController
  • StaffController

并且它们每个都具有相应的布局,用于每个视图下的所有视图.

  • _PublicLayout.cshtml
  • _StaffLayout.cshtml

如何使用_ViewStart.cshtml文件指定"Public"下的所有View/Action使用PublicLayout,"Staff"下的所有内容都使用StaffLayout?

谢谢!

asp.net-mvc layout razor asp.net-mvc-3

308
推荐指数
3
解决办法
16万
查看次数

ASP.NET MVC 3 - 部分vs显示模板与编辑器模板

所以,标题应该说明一切.

要在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件更好的东西:

  1. 它们在呈现HTML帮助程序时尊重模型层次结构(例如,如果在"Foo"模型上有"Bar"对象,则"Bar"的HTML元素将使用"Foo.Bar.ElementName"呈现,而部分将具有"的ElementName").

  2. 更强大,例如,如果你List<T>在ViewModel中有一些东西,你可以使用@Html.DisplayFor(model => model.CollectionOfFoo),而MVC足够聪明,可以看到它是一个集合,并为每个项目渲染单个显示(而不是Partial,这需要一个明确的环).

我也听说DisplayFor呈现了一个"只读"模板,但我不明白 - 我不能在那里扔一个表格吗?

有人能告诉我一些其他原因吗?是否有一个列表/文章比较这三个?

asp.net-mvc asp.net-mvc-partialview editortemplates razor asp.net-mvc-3

302
推荐指数
3
解决办法
7万
查看次数

ASP.NET Razor中的HTML.ActionLink与Url.Action

HTML.ActionLinkvs 之间有什么区别,Url.Action或者只是两种方式做同样的事情?

我什么时候应该更喜欢一个?

asp.net-mvc razor asp.net-mvc-3

290
推荐指数
5
解决办法
42万
查看次数

在ASP.NET MVC中提供favicon.ico

如何在ASP.NET MVC中提供favicon.ico的最终/最佳建议是什么?

我目前正在做以下事情:

  • 在RegisterRoutes方法的最开头添加一个条目:

    routes.IgnoreRoute("favicon.ico");
    
    Run Code Online (Sandbox Code Playgroud)
  • 将favicon.ico放在我的应用程序的根目录中(这也将是我的域的根目录).

我有两个问题:

  • 有没有办法把favicon.ico放在除我的应用程序的根之外的某个地方.在Content和他们处于同一水平的地方真是太狡猾了Controllers.
  • 这个IgnoreRoute("favicon.ico")陈述是否足够 - 或者我应该如Phil Haack的博客文章中所讨论的那样做.我不知道曾经在根目录以外的任何目录中看到过favicon.ico的请求 - 这会使这个变得不必要(但知道如何去做是很好的).

    routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});
    
    Run Code Online (Sandbox Code Playgroud)

asp.net favicon asp.net-mvc razor

251
推荐指数
5
解决办法
12万
查看次数

ASP.NET MVC Razor无需编码即可呈现

Razor默认编码字符串.没有编码的渲染是否有任何特殊语法?

.net c# asp.net asp.net-mvc razor

243
推荐指数
5
解决办法
11万
查看次数

在ASP.NET MVC Razor视图中用<br />替换换行符

我有一个接受输入的textarea控件.我想稍后通过简单地使用以下方法将该文本呈现为视图:

@ Model.CommentText

这适当地编码任何值.但是,我想用换行换字符,<br />我找不到一种方法来确保新的br标签不被编码.我尝试过使用HtmlString,但还没有运气.

asp.net-mvc razor asp.net-mvc-3

234
推荐指数
5
解决办法
15万
查看次数

ASP.NET MVC 3 Razor:在头标记中包含JavaScript文件

我正在尝试找出正确的Razor语法,以便将特定*.cshtml的JavaScript文件与_Layout.cshtml中定义的所有其他包含文件一起放在head标记中.

javascript asp.net-mvc include razor asp.net-mvc-3

226
推荐指数
1
解决办法
15万
查看次数

Razor视图引擎,如何进入预处理器(#if debug)

我今天正在写我的第一个剃刀页面,无法弄清楚如何进入 #if debug #else #endif

如何在剃刀中输入预处理器?

asp.net-mvc preprocessor razor

223
推荐指数
9
解决办法
6万
查看次数

什么是@ Html.DisplayFor语法?

据我所知,在Razor中,@ Html做了很多简洁的事情,比如为链接,输入等生成HTML.

但我没有得到DisplayFor功能......

我为什么要写:

@Html.DisplayFor(model => model.Title)
Run Code Online (Sandbox Code Playgroud)

什么时候我可以写:

@Model.Title
Run Code Online (Sandbox Code Playgroud)

razor asp.net-mvc-3

218
推荐指数
3
解决办法
18万
查看次数

如何在cshtml模板中创建函数?

我需要创建一个只在一个cshtml文件中必需的函数.您可以将我的情况视为ASP.NET页面方法,它是在页面中实现的最小Web服务,因为它们的范围限定为一个页面.我知道HTML帮助器(扩展方法),但我的功能只需要一个cshtml文件.我不知道如何在视图中创建函数签名. 注意:我正在使用Razor模板引擎.

asp.net-mvc razor asp.net-mvc-3

206
推荐指数
5
解决办法
12万
查看次数