sintaxis net mvc for asp asp.net-mvc-3 razor

asp.net-mvc-3 - net - razor html



¿Cómo crear una sentencia else if en Razor? (3)

Estoy tratando de mostrar algunas filas en una tabla. Dependiendo del grupo de usuarios, la vista debería mostrar un marcado diferente. Un administrador puede eliminar filas, pero un moderador solo puede marcarlas como visibles o invisibles.

¿Cómo escribo una declaración adecuada si no en Razor?

La página se muestra correctamente, pero el título de la página es Error de análisis

Este es mi código:

@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>


El título tiene un error de análisis porque no has establecido un título:

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

ahora para una sentencia else, no use la sintaxis de vuelta @ :

@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" }) }

Estás buscando un booleano, solo necesitas otro. También por else if , funciona igual.

Tu código podría simplificarse aún más simplemente haciendo:

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

Como está mostrando el mismo código de todos modos, solo está cambiando el atributo en función de un valor. Para mí, esto se vuelve más legible.


Solo utilizas else sin anteponer una @ . Sin embargo, no creo que ese sea el problema con el título de tu página. Tal vez necesitas establecer la propiedad ViewBag.Title ? Su página de diseño puede depender de su configuración.

@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" }) }

Título del tema:

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


como la pregunta es para otra cosa, si en la maquinilla de afeitar, usé esto para propósitos de SEO

en vista

@{ 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"; } }

la esperanza ayuda a alguien