我正在构建一个非常基本的MVC3站点,而我学习并且我在使用以下声明性Razor html帮助器时遇到困难.
在App_Code文件夹里面的RMB.cshtml里面:
@helper ReplaceCrLf(string strText)
{
@Html.Raw(Html.Encode(strText).Replace(Environment.NewLine, "<br />"));
}
Run Code Online (Sandbox Code Playgroud)
在我的index.cshtml视图中:
@RMB.ReplaceCrLf(Model.Post)
Run Code Online (Sandbox Code Playgroud)
这给了我帮助器中Html的空引用异常,因为它似乎不知道它是什么.我可以通过将Html从视图传递给帮助器来解决这个问题,但我想知道是否有另一种方式让我的共享html助手能够引用Html而不必将其传递给我写的助手?
为了完整起见,这是工作方法:
在App_Code中的RMB.cshtml中
@helper ReplaceCrLf(string strText, System.Web.Mvc.HtmlHelper Html)
{
@Html.Raw(Html.Encode(strText).Replace(Environment.NewLine, "<br />"));
}
Run Code Online (Sandbox Code Playgroud)
在index.cshtml视图中
@RMB.ReplaceCrLf(Model.Post, Html)
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一些东西来在我们的ASP.NET网站中保存全局站点范围的设置 - 诸如站点名称,谷歌分析帐号,facebook URL等等...该站点可以有多个"品牌"或子站点关联使用它,因此是sitguid列,我们还希望可以选择将它们分组,因此组列 - 例如TEST和PRODUCTION(通过web.config appsetting设置).
我不希望任何KEY在任何地方被硬编码,但我希望能够在代码中尽可能简单地引用它们,例如SiteSetting.getSetting("SiteName")(这些可以用在模板中(masterpages等) )更多初级开发者将创建)
我还希望能够管理管理控制台中的现有设置,并能够创建新设置.
数据类型列用于编辑表单,以便可以使用正确的输入元素,例如位类型的复选框,varchar的文本框等...
SiteSettings数据库表目前:
[sts_sitGuid] [uniqueidentifier] NOT NULL, -- tells us which site the setting is for
[sts_group] [nvarchar](50) NOT NULL, -- used to group settings e.g. test/live
[sts_name] [nvarchar](max) NULL, -- the display name of the setting, for edit forms
[sts_alias] [nvarchar](50) NOT NULL, -- the name for the setting
[sts_value] [nvarchar](max) NOT NULL, -- the settings value
[sts_dataType] [nvarchar](50) NULL, -- indicates the control to render on edit form
[sts_ord] …Run Code Online (Sandbox Code Playgroud)