如何从字符串中在ASP.NET MVC中创建UserControl

时间:2011-03-14 06:04:42

标签: c# asp.net asp.net-mvc user-controls razor

假设我想从原始字符串而不是.ascx文件创建用户控件,我该怎么做?临时文件不是一个选项。这甚至可能吗?我在网上找不到任何关于此事的内容。

额外奖励:如何使用新的剃须刀引擎?

4 个答案:

答案 0 :(得分:1)

我认为你就像我一样从正常的asp.net转移到这个MVC。

在asp.net mvc中,我们使用像@Html.ActionLink()@Html.CheckBox()@Html.CheckBox()这样的HTML帮助器,您可以通过创建这样的类来添加自己的@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
          }
     }
}

如果您愿意,可以将此类文件放在root下的Helpers文件夹中。请参阅this以创建自定义扩展程序。你可以找到最好的jQuery,如jqGrid,并在扩展名中实现它。

如果您认为扩展名不合适,您可以使用格式为@ class.method()的自己的类来返回html字符串。不要忘记在vcshtml视图文件的开头使用@using MyNamespace,或者在Razor程序集名称旁边的〜/ View / web.config中使用@using MyNamespace以确保类或扩展可用。它也将支持intellisense。

如果你想在同一个* .cshtml文件中定义“UserControl”,因为它只是特定于视图,只需使用@helper function(),因为ScottGu说here它将最小化页面中的代码只需致电@function()

asp.net和asp.net mvc在Control方面完全不同。你不能使用普通asp.net中的任何控件到asp.net mvc。

修改:有些拼写错误并添加更多信息。

答案 1 :(得分:0)

您可以使用自定义HTML帮助程序,不是吗?

答案 2 :(得分:0)

看看Templated Razor Delegates。似乎这就是你需要的

答案 3 :(得分:0)

解决方案是使用VirtualPathProvider为控件提供文本。示例:http://www.thecodinghumanist.com/Content/VirtualPathProviderExample.aspx