2015-01-06 2 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())) 

EDIT: Я знаю, что Status лучше сделать в ViewModel в большинстве случаев.

ответ

0

Помощники статичны по своей природе и не имеют доступ к модели страницы, если вам нужно сгенерировать Status сообщений, то лучше сделать это в View-модели:

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()) 

В качестве альтернативы, вы можете передать In и Total в качестве аргумента Помощнику:

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

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

Использование:

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

"Помощники статичны по своей природе". правда, но все равно можно создать Razor, введя «статус», так или иначе? – Arithmomaniac

+0

Я обновил ответ. – haim770

Смежные вопросы