.net mvc控制器传递方法到视图

很多人都是在视图里面定义方法,然后再使用。我个人也是这么干的。但是为了验证是否可以将方法从控制器传递到视图,所以做了个测试。结果真的可以。原理是利用了委托(delegate),因为委托本身就是一种类型。既然是类型,那么就有实例。有了实例就可以作为View()方法的参数传递到视图。

下面贴代码:

ActionResult:

        public delegate string MyDelegate(string content);

        public ActionResult DelegateTest()
        {
            MyDelegate myDelegate = (string content) => { return content; };

            return View(myDelegate);
        }

视图:

<h2>DelegateTest</h2>

@model MvcApplication1.Controllers.TestController.MyDelegate

@Model("delegate test")

既然委托都可以了,那么C#内置的Func<>委托肯定也是可以的

ActionResult:

        public ActionResult FunTest()
        {
            Func<string, string> myDelegate = (string content) => { return content; };

            return View(myDelegate);
        }

视图:

<h2>FunTest</h2>

@model System.Func<string, string>

@Model("fun test")

使用Func<>或者Action<>委托的好处就是不需要再自定义委托类型了。

有人会说,你傻啊,定义一个类,在类里面写方法不就行了。可咱这只是纯为了验证是否能实现。

原文地址:https://www.cnblogs.com/subendong/p/8446195.html