Razor基础,视图里如何调用controller里的函数

1、单行代码书写

    @代码

  2、多行代码书写

    @{    //@加个大括号就可以在里面写C#代码了。

      C#代码第一行

      C#代码第二行

     }  

  3、Razor模板引擎会自动判别代码块,但是当代码存在二义性的时候,可以用小括号澄清

@{
    string name = "张三";
 }
// @name你好   报错当前上下文中不存在名称"name你好"*@
@(name)你好

  再给一个例子,就是调用泛型方法的时候,尖括号会导致Razor转回标记,这个时候也可以用小括号澄清:

@(Html.SomeMethod<Type>())

  对于邮件名而言,Razor采用了一个简单的算法来判别,可以适应大多数情况,当出现Razor判别不出的时候,可以用两个@号,@@来强制输出@号。

  4、HTML编码

  默认输出的内容都是经过HTML编码的,这对防止xss攻击有一定作用,但是如果我想将一段代码,就比如javascript代码输出到前台,这时候要用

  @Html.Raw(content)  来保证内容不被编码  

@{
    string message = "<script>alert(‘你好!‘);</script>";
 }
 <span>@message</span>              //实际输出都浏览器的源码 <span>&lt;script&gt;alert('你好!');&lt;/script&gt;</span>

 <span>@Html.Raw(@message)</span>   //实际输出到浏览器的源码 <script>alert(‘你好!‘);</script>

  5、混合代码与纯文本

    如果想在代码块里向浏览器输出一段内容,这时候就要用到

    @:想输出的文本    //单行

    <text>想输出的文本</text>  //可以写成多行

    而且<text></text>还可以不写在@{}代码块了,但是@:必须写在代码块了,推荐使用<text></text>

    @{

        var i = 1;

        @:@i;  //用于输出变量

     }

  6、MVC调用后台方法

   controller代码:

public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewData["kk"] = "长江啊长江,你特别的长!";
            return View("list");
        }
        public static string GetName()
        {
            return "刘德华";
        }
     public string GetName1()
        {
            return "张学友";
        }
}

   View代码:

  @MvcStart.Controllers.HomeController.GetName();  //静态方法的调用

@{                              //非静态方法的调用
  var con = new MvcStart.Controllers.HomeController();
  var name1 = con.GetName1();
}
@name1

   注意,上面是静态的方法,静态的代码最简单,直接@写上命名空间等等就可以了。而静态方法只能写成多行,通过new一个对象来引用。

  @Url.Action("index")  此方法用于返回一个Action路径,当需要Action路径的时候可以用到,比如javascript的src是由程序生成的等等。

时间: 2024-12-15 01:33:23

Razor基础,视图里如何调用controller里的函数的相关文章

MVC中View视图调用Controllers里返回的值

在MVC中前台页面调用控制器里面的方法跟ASP中<% %>.<%= %>是有区别的,在MVC Razor引擎中,如果需要输出值,先声明一个变量去接收,然后用@输出就可以了. GetDictionaryNameByID()方法返回的是一个string类型的, 控制器的路径地址,这个地址在页面调用里面的方法会用到 前台View调用,注意:MVC里面显示输出得先声明一个变量去接收,然后在输出 最终显示效果如下图: MVC中View视图调用Controllers里返回的值

进行同一Controller里的不同方法Get请求时,总是定位到Controller里的同一个方法的解决

环境:我用的是webapi+EF4.0+html搭建的环境 问题:进行同一Controller里的不同方法Get请求时,总是定位到Controller里的同一个方法,具体如下: 1.Controller里有如下两个方法: [HttpGet]        public HttpResponseMessage AddPersonToPersonInfo(string pno, string pname); [HttpGet]        public HttpResponseMessage Mo

ASP.NET MVC中 在controller 里将 Partial View 转化为字符串的方法

namespace Common.Helper { public static class ControllerExtension { //根据部分视图名称,把部分视图内容转换成字符串 public static string RenderPartialViewToString(this Controller controller, string partialViewName) { return controller.RenderPartialViewToString(partialViewN

?js调用PHP里的变量,怎么弄?

js调用PHP里的变量,怎么弄 网上给的例子都是js文件里一开始先给这个变量一个值,要是那样有啥意思啊,我要的就是可以变化的. hychyc_2008 | 浏览 2741 次  2013-04-18 12:24 2013-04-20 10:34 最佳答案 <script>var str=<?php echo $value;?></script>这种做法我以前用过,有的浏览器可以,有的浏览器就认不出来.具体是IE几我忘了~~~好像是IE6认不出来.我的做法是:<?p

&quot;静态方法里只能调用静态变量和静态方法&quot;详解

静态方法里可以调用静态方法和静态变量,同时也能调用非静态方法和非静态变量. public class Test { public Test() {}; public Test(int i) {this.n = i;} public static int m = 5; public int n = 10; public void fun1() {System.out.println("非静态方法fun1");} public static void fun2() {System.out.

在JS中调用CS里的方法(PageMethods)

最近一直在看别人写好的一个项目的源代码,感觉好多东西都是之前没有接触过的.今天在代码中看到了一个类PageMethods,于是就在想,这个类是系统类还是自定义的呢?后面再网上百度了一下,原来PageMethods是用来在JS里调用CS里写好的方法.感觉这种方法的功能特别强调,所以在这里记录一下,也希望对大家有所帮助. 实例: Default.aspx 代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFi

在c或c+程序里打印调用栈。转

在C/C++程序里打印调用栈信息 我们知道,GDB的backtrace命令可以查看堆栈信息.但很多时候,GDB根本用不上.比如说,在线上环境中可能没有GDB,即使有,也不太可能让我们直接在上面调试.如果能让程序自己输出调用栈,那是最好不过了.本文介绍和调用椎栈相关的几个函数. NAME       backtrace, backtrace_symbols, backtrace_symbols_fd - support for application self-debugging SYNOPSIS

远程调用服务里的方法service,进程间通信adil的学习

1当一个进程需要调用另外一个进程的方法时候,进程可以通过aidl文件以接口的方式将方法抛出.比如android没有对外提供挂电话的方法,若用户想要调用这个方法就必须与电话管理这个应用程序通信,调用挂电话的方法. 2.下面我就举例一个demo调用远程服务里的方法.为了验证service能否单独启动,这个demo启动了2个远程服务,一个有activity的一个只有service的.并且他们抛出的接口名字相同,正好学习一下同名的引用,发现一个java文件里只能import  1个同同名的类,若想调用另

C# 调用类库里的事件

首先在类库中定义事件: //定义委托 public delegate void DelWeiTuo(string name); //定义事件 public event DelWeiTuo EventWeiTuo; 定义事件触发方法: //定义事件触发方法 public void Fun(string name) { if (EventWeiTuo != null) { EventWeiTuo(name); } } 满足情况触发事件: public void Number() { int j =