2012-11-21 49 views
2

嗨女士們,先生們,助手與C#類?什麼時候用什麼

我是來自Java的Razor的新手。我對助手的角色略有困惑。它們與定義一個完成相同事情的C#類有什麼不同?你什麼時候使用助手來創建一個類並調用該類的方法?

也許,供參考的人可以使用this example

也許爲了完成,在編寫Web應用程序時,Helpers和客戶端Javascript如何融合在一起?看起來他們會重疊嗎?

最佳,

喬治

+1

Eeh?你的例子中的MyCustomHelpers ** IS **是一個靜態的C#類,使用方法'TwitterSearch(string value)'...使用這個助手與客戶端JS的不同之處在於助手執行處理服務器端,而*客戶端* JS做它...客戶端:) – khellang

回答

0

傭工想幫助你創建了等等,這將使你建立一個負責任的web應用程序的文本框,按鈕,鏈接HTML控件。而在mvc中,您有兩種主要類型的助手:Html助手和Ajax助手。要使用JavaScript助手,您應該使用Ajax助手。無論如何,你應該訪問這個鏈接,並閱讀mvc助手以及如何創建自定義助手。

Creating MVC Helpers

Learning MVC helpers

+0

仍然不知道我理解高層次的概念... –

1

所以你可以定義助手至少有兩種方法。這是一種方法。

namespace MvcHelpers.Helpers 
{ 
    public class ButtonHelper 
    { 
     public static MvcHtmlString SpecialButton(string id) 
     { 
      return new MvcHtmlString(String.Format("<input id=\"{0}\" type=\"button\" value=\"Special\"/>", id)); 
     } 
    } 
} 

我認爲這是你是指什麼,當你說「C#類」來,但在現實中,他們都只是輔助函數也使得它更容易在您查看將要呈現的輸出HTML。

這裏是另一種設計助手的方法,這可能是你所說的「助手」。

namespace MvcHelpers.Helpers 
{ 
    public static class ButtonHelperExtension 
    { 
     public static MvcHtmlString SpecialButton(this HtmlHelper helper, string id) 
     { 
      return new MvcHtmlString(String.Format("<input id=\"{0}\" type=\"button\" value=\"Special\"/>", id)); 
     } 
    } 
} 

這被稱爲助手擴展,現在我們可以像所有其他標準HTML助手一樣引用它。以下是我們在Razor視圖中引用這兩種助手的方式。

@{ 
    ViewBag.Title = "Home"; 
} 
@using MvcHelpers.Helpers; 

<h2>Home Page</h2> 

@ButtonHelper.SpecialButton("button1") 
<br /> 
@Html.SpecialButton("button2") 

兩種技術都達到了完全相同的結果。被引用爲Html.SpecialButton的是擴展方法。我看到的唯一優點是很明顯,它是一個HTML幫助程序,並不執行其他功能。熟悉使用HTML助手的人現在將在使用InteliSense時看到您的新功能。但他們仍然必須提供適當的使用條款才能顯示出來。所以相同的結果略有不同的語義。

相關問題