2015-01-06 62 views
1

您是否將一行復雜的剃刀傳遞給幫助參數?這是我能想出的最好的,但它不可能是正確的:將複雜的剃刀表達式傳遞給幫手

@helper Bold(MvcHtmlString fragment){ 
    <b>@fragment</b> 
} 

@* 
helper containing the fragment, otherwise redundant 
*@ 
@helper Status(){ 
    @[email protected]:/@Model.Total processed 
} 

@Bold(new MvcHtmlString(Status().ToHtmlString())) 

編輯:我知道Status是更好的視圖模型做在大多數情況下。

回答

0

視圖助手是由本質上是靜態和不具備訪問頁面模型,如果你需要生成一個Status消息,您做的更好的視圖模型:

public class MyViewModel 
{ 
    public int In {get;set;} 
    public int Total {get;set;} 

    public string GetStatus() 
    { 
     return In + "/" + Total + " processed"; 
    } 
} 

和你的助手會看起來像:

@helper Bold(string fragment){ 
    <b>@fragment</b> 
} 

用法:

@Bold(Model.GetStatus()) 

或者,您也可以通過InTotal作爲參數傳遞給助手:

@helper Bold(string fragment){ 
    <b>@fragment</b> 
} 

@helper GetTotal(int _in, int _total) 
{ 
    @_in @:/ @_total processed 
} 

用法:

@Bold(GetTotal(Model.In, Model.Total).ToString()) 
+0

「視圖助手在本質上靜態的」。是真的,但仍應該可以通過以某種方式內嵌'狀態'來生成剃刀,不是嗎? – Arithmomaniac

+0

我更新了答案。 – haim770