2011-11-20 41 views
4

我想要做的就是能够在.cshtml文件中写入与剃刀风格标记和方法混合的javascript,并将其发送给一个单独的方法供以后使用。如何将包含剃须刀标记的内容用作方法的参数?

我的.cshtml看起来是这样的:

@{SomeClass.SaveForLater(@<script type="text/javascript">window.alert('@Model.SomeParamter')}</script>); 

和类SomeClass的内部:

public static void SaveForLater(HtmlString str) { 
    // will be using str.ToString() here and save the string output for use later on. 
} 

但我收到这是什么错误消息:
CS1660:不能lambda表达式转换为键入'System.Web.HtmlString',因为它不是委托类型

我是使用错误类型的参数或d o我需要重新思考整个概念?

解决方案 感谢SLaks下面我落得这样做:

public static void SaveForLater<T>(Func<T, HelperResult> template, dynamic model) 
{ 
    // template(model).ToHtmlString() 
} 

使用这样的:

@{SomeClass.SaveForLater<SomeModel>(
     @<script type="text/javascript">window.alert('@Model.SomeParamter')</script>, 
     Model 
     ); 

回答

2

你试图采取inline helper
您需要接受Func<Something, HelperResult>

+0

感谢您指引我朝着正确的方向发展,但是如果看一下我的例子,代表什么是“什么”类? –

+0

@MattiasHögnäs:任何你想要的。它将被传递给行动;看我的博客文章。如果你不想传递任何东西,只需使用'object'。 – SLaks