假设我想从原始字符串而不是.ascx文件创建用户控件,我该怎么做?临时文件不是一个选项。这甚至可能吗?我在网上找不到任何关于此事的内容。
额外奖励:如何使用新的剃须刀引擎?
答案 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