在控制器中调用方法

rob*_*pnl 3 .net c# razor asp.net-mvc-3

我是ASP.NET MVC 3的新手,但我有一个简单的问题.是否可以从CSHTML(Razor)页面调用Controller方法?

例:

xxxControl.cs:

public String Bla(TestModel pModel)
{
    return ...
}
Run Code Online (Sandbox Code Playgroud)

index.cshtml:

@Bla(Model) <-- Error
Run Code Online (Sandbox Code Playgroud)

谢谢.

更新:

谢谢@Nathan.这样做不是一个好主意.目标是:我需要一些模型字段的格式化字符串.但是我在哪里放置了返回格式字符串的代码?

Dar*_*rov 18

调用位于控制器上的方法的视图被认为是不好的做法.通常它是一个控制器动作,它填充模型并将此模型传递给视图.如果您需要在此模型上进行某些格式化,则可以编写HTML帮助程序.

public static class HtmlExtensions
{
    public static IHtmlString Bla(this HtmlHelper<TestModel> htmlHelper)
    {
        TestModel model = htmlHelper.ViewData.Model;
        var value = string.Format("bla bla {0}", model.SomeProperty);
        return MvcHtmlString.Create(value);
    }
}
Run Code Online (Sandbox Code Playgroud)

在你看来:

@Html.Bla()
Run Code Online (Sandbox Code Playgroud)

  • @robertpnl,我个人将html助手放在一个位于`Extensions`文件夹中的单独的类(例如`HtmlExtensions.cs`)中.这是MVC中的[HTML扩展概述](http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs). (3认同)