2011-03-14 51 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

相关问题