Как создать инструкцию else if в Razor?
Я пытаюсь отобразить некоторые строки в таблице. В зависимости от UserGroup View должен показывать разную разметку. Администратор может удалять строки, но модератор может только отмечать их как видимые или невидимые.
Как написать правильную инструкцию 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>
Ответы
Ответ 1
Заголовок имеет ошибку синтаксического анализа, потому что вы не указали название:
@{
ViewBag.Title = "Home Page";
}
теперь для оператора else, не используйте синтаксис @
:
@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" })
Потому что вы все равно показываете один и тот же код, просто изменяя атрибут на основе значения. Для меня это становится более читаемым.
Ответ 2
поскольку вопрос выполняется иначе, если в бритве я использовал это для цели 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";
}
}
Надежда помогает кому-то.
Ответ 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;
}