2011-09-06 18 views
0

我有一個視圖,其中我有一個代碼塊,我設置一些變量,然後使用這些變量來顯示或隱藏一些區域...MVC View中的全局代碼段給出一個錯誤....「表達式期望。」

當我建立這個網站。 @(Syntax Error和另一個說明Expression Expected出現編譯錯誤。任何人都可以指導我什麼,我做錯了什麼....

@ModelType arwedes.WebShop.Model.Gruppe1Liste 
@Code 

End Code 
@(
    Dim lblInfoTitleText As String = String.Empty 
    Dim lblInfoText As String = String.Empty 
    Dim panelInfoVisibility As Boolean = False 
    Select Case WebSession.Menu 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Home 
      lblInfoTitleText = arwedes.WebShop.Model.Text.GetText("Info.HomeTitle", AppSession.Language) 
      lblInfoText = arwedes.WebShop.Model.Text.GetText("Info.Home", AppSession.Language) 
      panelInfoVisibility = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Reservieren 
      lblInfoTitleText = arwedes.WebShop.Model.Text.GetText("Info.ReservierenTitle", AppSession.Language) 
      lblInfoText = arwedes.WebShop.Model.Text.GetText("Info.Reservieren", AppSession.Language) 
      panelInfoVisibility = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Kaufen 
      lblInfoTitleText = arwedes.WebShop.Model.Text.GetText("Info.KaufenTitle", AppSession.Language) 
      lblInfoText = arwedes.WebShop.Model.Text.GetText("Info.Kaufen", AppSession.Language) 
      panelInfoVisibility = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Verkaufen 
      lblInfoTitleText = arwedes.WebShop.Model.Text.GetText("Info.VerkaufenTitle", AppSession.Language) 
      lblInfoText = arwedes.WebShop.Model.Text.GetText("Info.Verkaufen", AppSession.Language) 
      panelInfoVisibility = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Member 
      If Request.RawUrl.Contains("login") Then 
       lblInfoTitleText = arwedes.WebShop.Model.Text.GetText("Info.MemberTitle", AppSession.Language) 
       lblInfoText = arwedes.WebShop.Model.Text.GetText("Info.Member", AppSession.Language) 
       panelInfoVisibility = True 
      End If 
    End Select 

    Dim bShowCatMenu As Boolean = False 
    Select Case WebSession.Menu 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Home 
      bShowCatMenu = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Kaufen 
      bShowCatMenu = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Reservieren 
      bShowCatMenu = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Member 
      If Request.ServerVariables("SCRIPT_NAME") = "/membermenu.aspx" Or Request.ServerVariables("SCRIPT_NAME") = "/welcome.aspx" Then 
       bShowCatMenu = True 
      End If 
    End Select 
) 
@If panelInfoVisibility Then 
    @: <div id="panelInfo"> 
    @: <p style="text-align: center; font-size: 8pt"> <b> <span id="lblInfoTitle">@lblInfoTitleText</span> 
    @: </b><br /> <span id="lblInfo">@lblInfoText</span> </p> </div> 
End If 

回答

0

嘗試這樣的:

@ModelType arwedes.WebShop.Model.Gruppe1Liste 
@Code 
    Dim lblInfoTitleText As String = String.Empty 
    Dim lblInfoText As String = String.Empty 
    Dim panelInfoVisibility As Boolean = False 
    Select Case WebSession.Menu 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Home 
      lblInfoTitleText = arwedes.WebShop.Model.Text.GetText("Info.HomeTitle", AppSession.Language) 
      lblInfoText = arwedes.WebShop.Model.Text.GetText("Info.Home", AppSession.Language) 
      panelInfoVisibility = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Reservieren 
      lblInfoTitleText = arwedes.WebShop.Model.Text.GetText("Info.ReservierenTitle", AppSession.Language) 
      lblInfoText = arwedes.WebShop.Model.Text.GetText("Info.Reservieren", AppSession.Language) 
      panelInfoVisibility = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Kaufen 
      lblInfoTitleText = arwedes.WebShop.Model.Text.GetText("Info.KaufenTitle", AppSession.Language) 
      lblInfoText = arwedes.WebShop.Model.Text.GetText("Info.Kaufen", AppSession.Language) 
      panelInfoVisibility = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Verkaufen 
      lblInfoTitleText = arwedes.WebShop.Model.Text.GetText("Info.VerkaufenTitle", AppSession.Language) 
      lblInfoText = arwedes.WebShop.Model.Text.GetText("Info.Verkaufen", AppSession.Language) 
      panelInfoVisibility = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Member 
      If Request.RawUrl.Contains("login") Then 
       lblInfoTitleText = arwedes.WebShop.Model.Text.GetText("Info.MemberTitle", AppSession.Language) 
       lblInfoText = arwedes.WebShop.Model.Text.GetText("Info.Member", AppSession.Language) 
       panelInfoVisibility = True 
      End If 
    End Select 

    Dim bShowCatMenu As Boolean = False 
    Select Case WebSession.Menu 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Home 
      bShowCatMenu = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Kaufen 
      bShowCatMenu = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Reservieren 
      bShowCatMenu = True 
     Case arwedes.WebShop.Web.Navigation.MenuEnum.Member 
      If Request.ServerVariables("SCRIPT_NAME") = "/membermenu.aspx" Or Request.ServerVariables("SCRIPT_NAME") = "/welcome.aspx" Then 
       bShowCatMenu = True 
      End If 
    End Select 
End Code 
@If panelInfoVisibility Then 
    @: <div id="panelInfo"> 
    @: <p style="text-align: center; font-size: 8pt"> <b> <span id="lblInfoTitle">@lblInfoTitleText</span> 
    @: </b><br /> <span id="lblInfo">@lblInfoText</span> </p> </div> 
End If 

這是說,這樣的代碼你寫不屬於視圖的一個。所以你的問題的真正解決方案是將其外部化(助手,視圖模型?)。

你有沒有想過把你的意見給網頁設計師?他會絕望地尖叫。

+1

我會將邏輯至少移動到控制器級別,甚至更高一些的站點地圖或導航服務。關鍵是邏輯應該在「適當」類中實現,例如可以是單元測試很容易。視圖應該只是從控制器中獲取這些值(infotitle,infotext,ispanelvisible showcatmenu等),而不是「計算」。 –

+1

@Tz_,完全同意你的看法,這個邏輯絕對不屬於一個觀點。 –

+0

感謝Darin的回答,並感謝@Tz_指向正確的方向。我一定會這樣做。 –

1

而不是@(...)將您的代碼放入@Code ... End Code塊中。

相關問題