2015-06-01 6 views
5

Я хотел бы использовать инструкцию IF ELSE в режиме Razor. Можно ли использовать IF (html.helper), а затем что-то сделать? Или любое предложение?IF ELSE html helper в режиме бритвы?

@using (Html.BeginForm()) 
{ 
    <table> 

      @for (int i = 0; i < Model.Count; i++) 
      { 
       <tr> 
        <td> 
         @Html.HiddenFor(m => m[i].Question_ID) 
         @Html.HiddenFor(m => m[i].Type) 
         @Html.DisplayFor(m => m[i].Question) 
        </td> 
       </tr> 
       <tr> 
        @if(@Html.DisplayFor(m=> m[i].Type =="Info_Text") ** 
        { 
         <td> 
           //DO NOTHING 
         </td>     
        } 
        else 
        { 
        <td> 
         @Html.EditorFor(m => m[i].Answer) 
        </td> 
        } 
       </tr> 
      } 

    </table> 
+0

действительно ли вы пробовали то же самое? это дает некоторую ошибку..post его – Sachu

+0

почему вы должны использовать оператор if на html.helper вместо этого в элементе модели? –

+4

Любая конкретная причина, по которой вы не просто проверили бы 'm [i] .Type ==" Info_Text "' вместо 'DisplayFor'? –

ответ

4

Как я уже говорил в мой комментарий, вы можете проверить значение m[i].Type непосредственно:

@if (m[i].Type == "Info_Text") { 
    <td></td> 
} else { 
    <td>@Html.EditorFor(m => m[i].Answer)</td> 
} 

Причина вы бы не испытать против ценности DisplayFor заключается в том, что он возвращает MvcHtmlString, а не просто тип типа string или int. Вы могли сделать что-то вроде этого, если вы когда-нибудь необходимость сравнения с DisplayFor нибудь (и, надеюсь, это делает все это сделать немного больше смысла):

@if (Html.DisplayFor(m => m[i].Type) == new MvcHtmlString("Info_Text")) 

Поскольку вы находитесь в процессе изучая MVC, вы также можете быть заинтересованы в том, как вы можете настроить помощник EditorFor, чтобы сделать это автоматически: http://www.hanselman.com/blog/ASPNETMVCDisplayTemplateAndEditorTemplatesForEntityFrameworkDbGeographySpatialTypes.aspx

+1

спасибо @dave ward, это понятно для меня и полезно! –

1

Зачем вам нужно использовать DisplayFor? У вас есть какая-то особая причина?

Как насчет, если вы используете

if(Model[i].Type =="Info_Text") 
{ 
<td> 
    //DO NOTHING 
</td> 
} 
+0

Спасибо! оно работает! –

+1

Вот что сказал @DaveWard в комментарии. Чем вы занимались? – BabyDuck