2012-11-16 18 views
4

對不起,問這樣一個簡單的問題,但我失去了很長時間試圖解決這個問題。最後,我決定問你。一個簡單的助手類不起作用

讓我們先從基本代碼:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
namespace Navigation.Helpers 
{ 
    public static class NavigationBarSE 
    { 
     public static MvcHtmlString RenderNavigationBarSE(this HtmlHelper helper, String[] includes) 
     { 
      return new MvcHtmlString("Y U no Work??"); 
      //NavTypeSE res = new NavTypeSE(includes); 
      //String ress = res.toString(); 
      //return new MvcHtmlString(ress); 

     }  
    } 
} 

在原來的形式,這個輔助需要返回由NavTypeSE類產生的字符串。但最後,得到的結果,我只希望它返回一個字符串我...但它並沒有這樣做...

你問之前,我可以說,

<add namespace="Navigation.Helpers"/> 

存在於Views文件夾中的Web.config文件中。

有關詳細信息,我NavTypeSE類,如下:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Navigation.Helpers 
{ 
    //Creates a Navigation Menu Type which includes Previous, Next and Validate Buttons 
     public class NavTypeSE 
     { 
     Boolean pr, nt, vld; 
     Boolean Previous { get; set; } 
     Boolean Next { get; set; } 
     Boolean Validate { get; set; } 
     public NavTypeSE(Boolean Previous, Boolean Next, Boolean Validate) 
     { 
      this.pr = Previous; 
      this.nt = Next; 
      this.vld = Validate; 
     } 
     public NavTypeSE() { } 

     public NavTypeSE(String[] inc) 
     { 
      for(int i=0; i<inc.Length; i++)//foreach (String s in inc) 
      { 
       String s = inc[i]; // Don't need for foreach method. 
       if (s.Equals("previous")||s.Equals("Previous")) 
       { 
        this.pr = true; 
       } 
       else if (s.Equals("next") || s.Equals("Next")) 
       { 
        this.nt = true; 
       } 
       else if (s.Equals("validate") || s.Equals("Validate")) 
       { 
        this.vld = true; 
       } 
       else 
       { 
        this.pr = false; this.nt = false; this.vld = false; 
       } 
      } 

     public String toString() 
     { 
      return "Previous: " + this.pr + ", Next: " + this.nt + ", Validate: " + this.vld; 
     } 
    } 
} 

而且,在我看來,我把這個助手象下面這樣:

@{ 
    String[] str = new String[] { "Previous", "next", "Validate" }; 
    Html.RenderNavigationBarSE(str); 
} 

這僅僅是一個項目的基礎。我在C#和ASP.NET MVC平臺上都是入門級的。抱歉花費你的時間。

+0

你正在得到什麼錯誤?不會頁面編譯(因爲它找不到幫助器方法),還是隻是空的,你的字符串不顯示?實際上出了什麼問題? –

+0

與編程無關:你不需要道歉(甚至兩次)提出問題。這是整個網站的基礎:) – hometoast

+0

@RenéWolferink:沒有迴應。沒有錯誤,沒有關於編譯問題。它沒有顯示任何東西!這讓我非常生氣。因爲這個類的另一個版本成功地工作! :) – caner

回答

2

您的RenderNavigationBarSE什麼也沒有寫入響應只是返回一個MvcHtmlString

所以,你需要把@的方法調用之前告訴您要返回MvcHtmlString寫入響應(否則一個代碼塊中它只是執行你的方法,並扔掉返回值)

剃刀引擎
@{ 
    String[] str = new String[] { "Previous", "next", "Validate" }; 
} 

@Html.RenderNavigationBarSE(str); 

你可以閱讀更多有關剃刀語法:

+0

太棒了!感謝您的幫助...... 我試圖 'code' @String .... @ Html.Render .. 'code' 有兩個 「@」 符號,但沒有奏效。所以我認爲,當我把它們放入相同的pharantesis時,它必須工作! :) 真的很感激! – caner

+0

在瞭解了Razor Synax的細節後,我會繼續使用MVC 4進行編碼,我明白這一點。 謝謝你的一切。 – caner