mvc razor语法法怎么加载一个页面

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&Razor语法中链接的一些方法 - 推酷
Razor语法中链接的一些方法
在Razor中,有HTML.ActionLink和 Url.Action来呈现链接。它们有什么区别呢。能分清了,就知道在什么情况之下使用它们了。
首先来看html.ActionLink,这个方法重载挺多的,最终生成一个&a href=&..&&&/a&标记。
如果没有指定controller,则默认为本页面对应的Controller。
方法一:Html.ActionLink(&link text&,&actionName&)
方法二:Html.ActionLink(&link text&,&actionName&,&controlName&)
方法三:Html.ActionLik(&link text&,&actionName&,routeValues)
routeValues参数是routeValue可以向action传递参数,如 new { id=1}
方法四:Html.ActionLink(&link text&,&actionName&,routeValues,htmlAttributes)
方法中最后一个参数htmlAttribute可以设置&a&标签的属性。
方法五:Html.ActionLink(&link text&,&actionName&,&controlName&,routeValues,htmlAttributes)
这个就不做实例演示了,它就是上面的各个版本的综合版。
Url.Action只返回一个url,也可以指定控制器指定action让其返回完整URL地址,这个url是不含&a&标签的。
下面Insus.NET列举一个方法重载:Url.Action(&actionName&,&controllerName&,routeValueDictionary,&protocol&,&hostName&)
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
没有分页内容
图片无法显示
视频无法显示
与原文不一致教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
投稿:hebedich
字体:[ ] 类型:转载 时间:
文章主要是介绍了通过一个第三方类库RazorJS,实现Javascript 文件里使用 .Net MVC Razor 语法,很巧妙,推荐给大家
相信大家都试过在一个 View 里嵌套使用 javascript,这时就可以直接使用 Razor 语法以调用 .NET 的一些方法。如以下代码嵌套在一个 Razor 的 View 里:
var currDate = '@DateTime.Now'; //直接调用.NET的方法
console.log(currDate)
但另一种情况是,如果我想在一个独立的 JS 文件里使用 Razor,那以上的方法可行不通,因为MVC不会直接解释JS文件,只有放到 Razor view里才可以。不过在此我向大家推荐一个第三方类库,就可让你直接在独立的 JS 文件里使用 Razor
此类库名字就叫 RazorJS,这是一个开源的项目,可到以下地址下载源码:
或者也可以直接通过Nuget进行安装:
PM& Install-Package RazorJS
OK,先说说这个类库能为我们带来什么吧。安装后你可以直接在 JS 文件里使用所有 .NET 支持的方法,如上面的代码就可以直接放到独立的JS文件里去使用。另外你还可以在JS文件里引用.NET的全名空间,如要调用 File 对象来读取文本文件内容,就可以直接引用 System.IO 命名空间:
@using System.IO;
var s = 'Hello at @DateTime.Now \n @File.ReadAllText(System.Web.Hosting.HostingEnvironment.MapPath("~/web.config"))';
运行后就可直接在 JS 里获取到 web.config 文件里的所有内容。看样子挺不错吧,呵呵。那到底此类库是如何运作的呢?其实它是使用了一个叫 RazorEngine 的类库达到以上效果的。RazorEngine 是一个 Razor 的解释引擎,其功能非常强大,我之前也在一些项目中使用过。通过此引擎,你甚至可以直接在 win form 中使用 Razor 语法,呵,不知你有没想到其好处了?
嗯,不错,有了此引擎,就可以完全独立了 web 环境去使用 MVC 的 Razor ,这个功能可让你非常方便地制定一些灵活的模板,如一些 email 模板,你可直接在模板里使用各种.NET 方法甚至自定义的对象,然后动态生成想要的内容。OK,但这个引擎并不是这次我要介绍的东西,在此只是顺便说说啦
接下来说一个 RazorJS 的使用方法,如果你是直接通过 Nuget 安装的,那么就会自动帮你配置好 web.config,这是建议的安装方法,否则你就要自己添加 web.config 里的配置了,有好几处地方,这里也不详说,大家安装了后可对比一下就知道了。要使用 RazorJS 也很简单,只需使用以下语法引用你要的 JS 文件就可以了:
@Html.RazorJSInline("~/Scripts/Example.js")
不过要注意一点的是,在你的 web.config 里会有一段配置允许 RazorJS 使用的目录,就是说你的JS文件必须放到此目录里才可以使用此方法来引用:
&razorJSSettings handlerPath="~/razorjs.axd"&
&allowedPaths&
&add path="~/Scripts" /&
&/allowedPaths&
&/razorJSSettings&
最后要说一下的是其限制。有好的地方当然也有不好的一面,由于其使用的是 RazorEngine ,所以你不可以在 JS 里使用 MVC 的 HTML Helper 方法,即所有 @Html 开头的方法。另一个问题就是其不能识别 JS 里的注释代码,就是说如果你在注释里使用了 .NET 的方法也一样会执行,如果你的方法正确就没问题,否则就会中断 JS 的执行直接报错了,所以不要以为没用的方法注释掉就可以了哦。
关于不能执行 @Html helper的问题,我这里提供另一个解决办法,不过这就可修改其源代码,想折腾的朋友可以试试。其实这样做也可以使用很多自定义的方法,更加灵活方便哦。下载了 RazorJS 源码后,你可直接在上面修改然后重新编译一个DLL出来,另一种方法就是将其源码当作另一个项目,直接加到你自己的项目中去。
在其源码中,打开 HtmlTemplateBase.cs 文件,你就可在此添加自己的方法了,然后在这里添加的方法都可直接在 JS 里调用。如在源码中你可发现已封装的一个 Href 方法,可将 URL 转换为在请求客户端可用的 URL。根据此写法,我们就可添加自己的方法,如以下是我封装一个动态获取国际化资源文件的方法,这样就可直接在JS里使用.NET的资源文件进行国际化了:
public class HtmlTemplateBase : TemplateBase
//手工调用资源文件管理器
private static ResourceManager resources = (ResourceManager)System.Type.GetType
("RazorJS.Resource").GetProperty("ResourceManager").GetValue(null, null);
public HtmlTemplateBase()
Url = new UrlHelper(HttpContext.Current.Request.RequestContext);
public string Href(string originalUrl)
return Extensions.ResolveUrl(originalUrl);
public string GetLangText(string langKey)
根据key返回相关的语言
return resources.GetString(langKey);
public UrlHelper Url { }
然后在JS里直接调用即可:
var s = '@GetLangText("CoderBlog")';
console.log(s);
运行完后,就可直接在JS里输入 CoderBlog 这个key的内容啦
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具随笔- 20& 文章- 0& 评论- 25&
Razor尽量减少编写一个视图模板需要敲入的字符数,实现快速流畅的编程工作流。与大部分模板的语法不同,你不必在HTML中为了明确地标记出服务模块的开始和结束而中断编程。Razor解析器足够聪明,能从你的代码中推断出来。这使其简洁,富有表现力的语法输入干净,快速,有趣。
使用标记来识别代码中的内容块&&是使Razor在涉及HTML生成的情况下简洁高效的一个重要因素。
然而不是所有的内容块都是以标记元开始,在有些案例中,Razor解析器不能隐式检测出内容块。
这就需要Razor通过在代码块中使用&@:字符序列&来显式指明内容块的开始。@:序列表明该行后面的内容应该被视为内容块:
在@:内容块中使用代码碎块(Code Nugget)
另外 ,Razor允许你用一个&text&元素 来显式标识内容:
&text&标签是一个 Razor 特殊处理的元素。Razor将&text&块的内部内容视为内容块,不呈现包含那些内容的&text&标签(这意味着只呈现&text&内部内容,不呈现标签本身)。这使呈现没有被HTML元素包装的多行内容块变得方便。
如果你想要更简洁的@: 序列,&text&元素也能根据需要用来标识单行内容.
Razor启用一种简洁的模式化语法,实现非常流畅的编码工作流。 Razor能灵活地通过检测&tag&元素来识别内容块的起始, 从而让Razor方法在有HTML生成的场景中很有效,也使你不用明显地标注95% 的 if/else 和foreach 场景中内容块的开始/结束.
在当你不想在一个代码容器块中使用HTML元素,却需要更精确地标明一个内容块的边界时,你可以使用Razor的@:和&text&句法。
-------------------------------------
1 常用&Html&标签
Html&语法&:&label for="UserName"&用户名&/label&
:@Html.LabelFor(m =& m.UserName)
1.2 &input type="text" /&
Html&语法&:
&input& id="&" name="&" type="&" value="" /&
Razor语法:
@Html.TextBoxFor(m =& m.UserName)
1.3 &input type="hidden" /&
Html&语法&:
&input id="&" name="&" type="hidden" value="" /&
Razor语法:
@Html.TextBoxFor(m =& m.UserName)
1.4 &input type="password" /&标签
Html&语法&:
&input id="UserPass" name="UserPass" type="PasswordFor" value="" /&
Razor语法:
@Html.PasswordFor(m =& m.UserPass)
1.5 &input type="radio" /&标签
Html&语法&:
Razor语法:
@&Html&.RadioButtonFor(m=& m.Sex, 0, new { @id = "Sex0"}) 男
@&Html&.RadioButtonFor(m=& m.Sex, 1, new { @id = "Sex1"}) 女
@&Html&.RadioButtonFor(m=& m.Sex, 2, new { @id = "Sex2"}) 保密
1.6 &input type="checkbox" /&标签
Html&语法&:
Razor语法:
@Html.PasswordFor(m =& m.UserPass)
2 链接地址
@Url.Content()
@Url.Action
2.1 引用CSS样式文件
Html&语法&:
Razor语法:
2.2 引用Javascript文件
Html&语法&:
Razor语法:
2.3 Image引用图片文件
Html&语法&:
Razor语法:
2.4 超链接
Html&语法&:
Razor语法:
@Html.ActionLink("注册", "Register")
注:@Html.ActionLink有多个重载,具体参照MSDN API文档
3.1 正常提交表单
@using(&Html&.BeginForm()){
//默认提交到本页面
&input type="submit" value="Button"/&
3.2 Ajax提交表单
@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId="txtResult" }))& {& &&&&&&& &input type="submit" value="Button"/&&&&&&&&&&&&&& &&&&&&& &span id="txtResult"/&& }&
----------------------------------------------------------
Razor文件类型
& &Razor可以在vb.net和C#中使用。分别对应了两种文件类型,.vbhtml和.cshtml&
Razor的标识符
& &&@字符被定义为Razor服务器代码块的标识符,后面的表示是服务器代码了。web form中使用&%%&中写服务器代码一个道理。在vs工具里面提供了代码着色和智能感应的功能。如下面代码:
@{string userName= "邓星林";}
&span&@userName&/span&
&span&@DateTime.Now.ToString("yyyy-MM-hh")&/span&
Razor的作用域
& & &在上面一个例子中都已经使用到了大括号{},不错,大括号里面的就是表示作用域的范围,用形如@{code}来写一段代码块。
string userName= "邓星林";
在作用域(代码块)
用Razor和html代码混合编写
& &在Razor中写html代码和html代码中写Razor语句都是可以的,并且还有智能提示。
& &a.在作用域内如果是以html标签开始则视为文本输出
& &b.如果要输出@,则使用@@
& &c.如果要输出非html标签和非Razor语句的代码,则用@:,他的作用是相当于在处于html下面编写一样了,如在@:
var str = "abc";
////下面会输出:this is a mail:, this is var: abc,this is ,this is @;
@: this is a mail:, this is var: @str,this is
,this is @@;
//下面输出abc
Razor作用块注释
& & razor作用块里面本身就是服务器代码了,因此可使用服务器代码的注释,注释有//和/**/分别是单行注释和多行注释。
& &另外razor注释还可以使用自身特有的@* 注释的内容 *@,支持单行和多行的。
var i = 10;
@* asdfasf *@
Razor类型转换
& & & & &As系列扩展方法和Is系列扩展方法
& & &&& & AsInt(), IsInt()
  & & AsBool(),IsBool()
& &   AsFloat(),IsFloat()
  &  AsDecimal(),IsDecimal()
  & & AsDateTime(),IsDateTime()
  & ToString()
var i = &10&;
&p& i = @i.AsInt() &/p& &!-- 输出 i = 10 --&
&&@Href("~/")//表示网站的根目录
&&@Html.Raw(Module.Content) &输出HTML,如:@Html.Raw(‘&font color=‘red‘&红字&/font&‘),就会显示出红色的&红字&,不用的话会直接显示这段html字符串(&font color=‘red‘&红色文字&/font&)
在实际中,比如一个网站,整过框架是一样的,而有的地方是很多相同的版块。因此我们需要复用。
布局(Layout)
& &layout方式布局就是相当于一个模板一样的,我们在它地址地方去添加代码。相当于定义好了框架,作为一个母版页的,erBody()方法
&!DOCTYPE html&
&html lang="en"&
&meta charset="utf-8"/&
&title&我的网站 - @Page.Title&/title&
@RenderBody()
Layout = "/LayoutPage.cshtml";
Page.Title = "测试页面哦";
&p&This is a layout test&/p&
页面(Page)
&page是当需要在一个页面中,输出另外一个razor文件的内容时候用到,比如头部或者尾部这些公共的内容时候需要用到。输出就使用&@RenderPage()方法
如:A页面中也要把B页面的内容输出
@RenderPage("/b.cshtml")
b页面的代码如下:
&font color="red"&这是一个子页面&/font&
Section区域
& & Section是定义在Layou的中使用的。在Layout的页面中用。在要Layout的父页面中使用@RenderSection("Section名称&")
&!DOCTYPE html&
&html lang="en"&
&meta charset="utf-8"/&
&title&我的网站 - @Page.Title&/title&
&@RenderSection("SubMenu")
@RenderBody()
在它的子页面中使用
@section SubMenu{
Hello This is a section implement in About View.
&如果在子页面中没有去实现了SubMenu了,则会抛出异常。我们可以它的("SubMenu", false)
@if (IsSectionDefined("SubMenu"))
@RenderSection("SubMenu", false)
&p&SubMenu Section is not defined!&/p&
& &helper就是可以定义可重复使用的帮助器方法,不仅可以在同一个页面不同地方使用,还可以在不同的页面使用。
如在cshtml中那么写:
@helper sum(int a,int b)
var result=a+b;
&p&@@helper的语法&/p&
&p&(2,3)&/p&
&p&(5,9)&/p& &/div&
我们通常会把一类Helper放在一个单独的cshtml文件中,而文件名就相当于一个类名。
我把sum放在HelpMath.cshtml文件中,则我们在那上面cshtml中的使用方法是:
&p&(2,3)&/p&
&p&(5,9)&/p&
另外,系统还为我们提供了一些列的Helper,,我们可以方便的使用:
@Html.TextBox("txtName")
&&国之画&&&&&&
版权所有 京ICP备号-2
迷上了代码!}

我要回帖

更多关于 mvc5 razor语法手册 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信