2015-09-01 111 views
11

我是一個進步和變化的狂熱粉絲。我很清楚,ASP.NET MVC團隊已經殺死了網頁最有價值的特性之一(@helper),無論人們認爲什麼。如果您必須刪除某些東西,請將其替換爲功能和用途相同的東西。到目前爲止,我不認爲ViewComponent解決這個問題也沒有TagHelper。有沒有更換這個?某些需要參數並返回HtmlString在ASP.NET 5/asp.net中替換@helper mvc 6

否Nuget包裝在哪裏?

有人稱這是一個很好的改進。我完全和強烈地推崇這一觀點。

我沒有看到任何有害的搭配:

@helper foo(string something){ 
    <div>Say @something</div> 
} 

var emailbody = classfilenameinAppCodefolder.foo("hello"); //store result in a variable for further processes 

在地球上是什麼讓你刪除這樣一個有價值的功能?你可以用什麼替換它?

現在我相信它是RC之前的臨時刪除。 https://github.com/aspnet/Razor/issues/281https://github.com/aspnet/Mvc/issues/1130好吧!最好是。我希望有人正在努力。如果沒有@helper,構建大的HtmlString或'模板'將是一個嚴重的痛苦。

注:部分視圖似乎沒有辦法。我認爲這只是渲染視圖不會返回以可變

其次,發生了什麼事App_Code文件夾?

+0

「ViewComponent」有什麼問題?如果這是你的問題,它也可以返回一個'HtmlString'。 – Dealdiane

+0

ViewComponent與partialView類似,但功能更強大。問題是,我可以將這個Component的html結果存儲在一個變量中,以便在我的邏輯中進一步處理。我不想從視圖中渲染視圖的一部分。我有興趣在動態生成視圖並以@helper等更簡單的方式將其存儲在變量中。我所看到的ViewComponent看起來太精細了。 –

回答

2

@helper指令was removed因爲它是不完整的,它的當前設計不符合新的「ASP.NET 5方式」。其中一個原因是幫助者應該在App_Code文件夾中聲明,而ASP.NET 5 has no concept of special folders。因此,團隊決定暫時刪除該功能。

雖然有計劃將其帶回未來。請參閱thisthis

+2

嗯....很明顯,我不會與ASP.NET 5有任何關係。如果有必要,我寧願堅持4或遷移到node.js。目前我無法保證它的方向。它對我來說看起來像一個新的學習曲線。我沒有得到那個時間的傢伙....太多瞭解這幾天 –

5
@{ 
    Func<String, IHtmlContent> foo = @<div>Say @item</div>; 
} 
+0

下面是這個想法的一些背景:https://github.com/aspnet/Razor/issues/715#issuecomment-198456302 –

+0

如何使用它沒有任何參數? (例如Func ...不起作用) – Netstep

1

我想展開@ Alexaku的答案,並展示我如何實現一個像helper一樣的函數。它只對一個特定的頁面有用,但它允許您使用輸入參數多次執行一段剃鬚刀代碼。語法並不好,但是我發現它在沒有剃刀的@helper函數的情況下非常有用。首先聲明一些將包含輸入參數的Dto。

@functions { 
    private class Dto 
    { 
     public string Data { get;set; } 
    } 
} 

然後申報剃刀功能。請注意,displayItem值可以是多行的,也可以使用@item訪問Dto變量。

@{ 
    Func<Dto, IHtmlContent> displayItem = @<span>@item.Data</span>; 
} 

然後,當您要使用剃鬚刀模板時,您可以在頁面中的任意位置將它稱爲以下內容。

<div> 
    @displayItem(new Dto {Data = "testingData1" }); 
</div> 
<div> 
    @displayItem(new Dto {Data = "testingData2" }); 
</div> 
相關問題