2011-03-14 26 views
1

假設我想從原始字符串而不是.ascx文件創建用戶控件,我該怎麼做?臨時文件不是一個選項。這甚至有可能嗎?我無法在網上找到任何關於此的信息。如何在字符串中創建ASP.NET MVC中的UserControl

獎勵:我將如何使用新的剃鬚刀引擎來做到這一點?

回答

0

你可以使用自定義的HTML幫手,對不對?

1

我想你只是從正常的asp.net移出到這個MVC就像我一樣。

在asp.net的MVC,我們使用HTML幫助像@Html.ActionLink()@Html.CheckBox()@Html.CheckBox()你可以添加你自己的分機一樣@Html.Grid()通過創建這樣一個類:

using System; 
using System.Web.Mvc; 

namespace MyNamespace.Helpers 
{ 
    public static class GridExtensions 
    { 
      public static string Grid(this HtmlHelper helper, <any parameter you think to generate the html>) 
      { 
       // render the html table here based on the parameter 
      } 
    } 
} 

將這個類文件的文件夾助手如果你喜歡,可以在根目錄請參閱this來創建自定義擴展。你可以找到像jqGrid這樣的最好的jQuery,並在擴展中實現它。

如果您認爲擴展名不合適,您可以使用格式@class.method()的自己的類來返回html字符串。不要忘記在vcshtml視圖文件的開頭使用@using MyNamespace,或者在除了Razor程序集名稱之外的〜/ View/web.config中使用@using MyNamespace,以確保可用的類或擴展。它也將支持智能感知。

如果要定義在同一個* .cshtml文件中的「用戶控件」,因爲它只是特定的觀點,只是用@helper function()作爲ScottGu說here將通過只調用@function()儘量減少頁面的代碼。

asp.net和asp.net mvc在Control方面完全不同。你不能使用任何控制從正常的asp.net進入asp.net mvc。

編輯:一些錯字和添加更多信息。

+0

我想渲染的用戶控件是用RenderPartial渲染另一個用戶控件的? – jjxtra 2011-03-18 20:14:24

+0

我不能得到你的問題,但部分視圖可以是.aspx或.ascx文件,所以在Razor中可以使用.cshtml局部視圖與視圖本身相同。局部視圖只能在html/razor(或html/asp.net <%%>)格式中查看,以便在另一個視圖中共享常見的html/razor。看看這裏的局部視圖http://rachelappel.com/razor/partial-views-in-asp-net-mvc-3-w-the-razor-view-engine/ – CallMeLaNN 2011-03-21 05:23:41

+0

對不起,我的意思是如果... – jjxtra 2011-03-21 06:11:03

相關問題