2011-11-19 21 views
16

テーブルにいくつかの行を表示しようとしています。 UserGroupに応じて、ビューは異なるマークアップを表示する必要があります。管理者は行を削除できますが、モデレーターは表示または非表示としてマークすることしかできません。Razorでelse if文を作成する方法は?

Razorに適切なif else文を書くにはどうすればよいですか?

ページが正しく表示されますが、ページのタイトルが

解析エラーですこれは私のコードです:

@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

タイトルは、タイトルを設定しなかったため、エラーを解析しています構文:

@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が必要です。 else ifの場合も同様です。

あなたのコードは、単に行うことで、より簡単にすることができます。

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

あなただけの値に基づいて属性を変更し、とにかく同じコードが表示されますので。私にとって、これはより読みやすくなります。かみそりで、私は目的

ビューで

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

} 

希望が誰かを助けSEOのためにこれを使用した場合の質問は他のためにあるよう

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

タイトル問題:

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

今else文のために、@バックは使用しないでください:

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

私はそれを修正しましたが、私はまだ解析エラーのタイトルを取得しています。どうして? – Kenci

+0

'ViewBag.Title'を修正しましたか?私はあなたが私の元の答えを見た後にそれを加えたかもしれません。 – tvanfosson

関連する問題