2011-11-19 3 views
16

Я пытаюсь отобразить некоторые строки в таблице. В зависимости от UserGroup View должен показывать разную разметку. Администратор может удалять строки, но модератор может только отмечать их как видимые или невидимые.как создать инструкцию else if в Razor?

Как написать правильное выражение if else в Razor?

страница отображается правильно, но заголовок страницы Ошибка синтаксического анализа

Это мой код:

@model MvcApplication3.Models.ViewModels.New.Question.MatrixRows 

@{ 
    bool visible = Model.Visible; 
} 

<tr> 
    <td> 
    @if(visible) 
     { 
     @Html.TextBoxFor(cn => Model.Row_Number, new { @class = "row required digits", size = 1 }) 
     } 
    @if (!visible) 
     { 
     @Html.TextBoxFor(cn => Model.Row_Number, new { @class = "row required digits", size = 1, disabled = "disabled" }) 
     } 
    </td> 
    <td> 
    @if(visible) 
     { 
      @Html.TextBoxFor(bs => Model.Row_Description, new { @class = "rowdesc", size = 45 }) 
     } 
    @if (!visible) 
    { 
     @Html.TextBoxFor(bs => Model.Row_Description, new { @class = "rowdesc", size = 45, disabled = "disabled" }) 
    } 
    </td> 
    <td> 
     @if (HttpContext.Current.User.IsInRole("Administrator")) 
     { 
      @Html.HiddenFor(x => x.Delete, new { @class = "mark-for-delete" }) 
      @Html.LinkToRemoveNestedForm("Slet", "tr", "input.mark-for-delete")  
     } 
     @if (HttpContext.Current.User.IsInRole("Moderator")) 
     { 
      @Html.HiddenFor(x => x.Visible, new { @class = "mark-for-visible" }) 
      @Html.LinkToDisableNestedForm("Deaktiver", "tr", "input.mark-for-visible")  
     } 
     @Html.HiddenFor(id => Model.Row_Id) 
    </td> 
</tr> 
+0

Поскольку вы говорите, что страница отображается правильно, возникает вопрос о логике в представлении или ** заголовке ** на странице? – JustinStolle

+0

Логика должна быть неправильной, поскольку она дает название ошибки? – Kenci

ответ

25

Название должно разобрать ошибки, потому что вы не установили название:

@{ 
    ViewBag.Title = "Home Page"; 
} 

теперь для оператора еще, не используйте назад @ синтаксис:

@if(visible) 
{ 
    Html.TextBoxFor(bs => Model.Row_Description, new { @class = "rowdesc", size = 45 }) 
} 
else 
{ 
    Html.TextBoxFor(bs => Model.Row_Description, new { @class = "rowdesc", size = 45, disabled = "disabled" }) 
} 

Вы проверяете логическое значение, вам просто нужно другое. Также для else if он работает так же.

Ваш код может быть упрощена еще больше просто делать:

@Html.TextBoxFor(bs => Model.Row_Description, new { @class = "rowdesc", size = 45, disabled = visible ? "" : "disabled" }) 

Поскольку вы показываете тот же код, в любом случае, просто изменив атрибут на основе значения. Для меня это становится более читаемым.

3

Вы просто использовать elseбез предваряя в @. Однако я не думаю, что это проблема с названием вашей страницы. Возможно, вам нужно установить свойство ViewBag.Title? Ваша страница макета может зависеть от установленной.

@if(visible) 
    { 
    @Html.TextBoxFor(cn => Model.Row_Number, new { @class = "row required digits", size = 1 }) 
    } 
else 
    { 
    @Html.TextBoxFor(cn => Model.Row_Number, new { @class = "row required digits", size = 1, disabled = "disabled" }) 
    } 

Название выпуска:

@{ 
    bool visible = Model.Visible; 
    ViewBag.Title = "My Title; 
} 
+0

Хорошо, я исправил его, но я все еще получаю название Parse Error. Как так? – Kenci

+0

Вы исправили 'ViewBag.Title'? Возможно, я добавил, что после того, как вы увидели мой первоначальный ответ. – tvanfosson

4

как вопрос для другого, если в бритву, я использовал это для SEO целей

ввиду

@{ 
    if (ViewBag.Option == "Mobiles") 
{ 
    ViewBag.Title = "Mobiles"; 
    ViewBag.Description = "Mobiles"; 
    ViewBag.Keywords = "Mobiles"; 

} 

    else if (ViewBag.Option == "holiday") 
{ 
    ViewBag.Title = "holiday"; 
    ViewBag.Description = "holiday."; 
    ViewBag.Keywords = "holiday"; 
} 


else 
    { 
     ViewBag.Title = "home"; 
     ViewBag.Description = "home"; 
     ViewBag.Keywords = "home"; 
    } 

} 

надежда кто-то помогает.

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