问题标签 [razor-declarative-helpers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
12914 浏览

.net - 为什么 Razor 声明性 @helper 方法中的 HtmlHelper 实例为空?

使用 MVC 3 RTM 我很奇怪NullReferenceException

原来Html(类型HtmlHelper)是null

我以前从未在常规视图中看到过这种情况。我开始在 Razor 中试验声明性辅助方法(到目前为止,它们似乎有点有限),我对我在这里看到的内容感到非常困惑。

0 投票
1 回答
5904 浏览

c# - ASP.NET MVC - calling Razor @helper from another @helper

I've been implementing some @helper functions in Razor based on Scott Gu's post, and things are going pretty well.

What I was wondering though, is if it's possible to call one @helper from another. For example, I have the following helper that displays date and time for a DateTime?:

This works fine, but in some situations I have other fields that are not nullable, so I tried adding this to keep things DRY:

This compiles and runs OK, but when it renders it just shows as an empty string for the non-nullable DateTime. Here's the markup that calls the @helper functions. Model.UpdateDate is a regular DateTime and Model.LastRun is a DateTime?

Is there a way to render one @helper function by calling it from another?

0 投票
1 回答
2410 浏览

asp.net-mvc-3 - 在 Razor ASP.Net MVC3 的另一个视图中使用 @helpers

我想写几个简单@helpers好用的几个视图。我希望它们位于 Razor .cshtml 文件中(不在 ac# 类中)以突出显示 HTML 语法。

我可以很容易地访问@helpers写在同一个视图中,我可以将它们分成Helpers.cshtml.,如果我把它Helpers.cshtml放到 App_Code 文件夹中,我可以从任何视图通过@Helpers.MyHelper(). 但我希望它们只能访问几页。

我认为,如果帮助程序在 c# 类中,这可能就像放置一个 @using 一样,但是另一个视图的命名空间是什么?..

0 投票
6 回答
17156 浏览

asp.net-mvc - 在 App_Code 的共享 @helper 中使用 @Html

我在学习时正在构建一个非常基本的 MVC3 站点,并且在使用以下声明性 Razor html 帮助程序时遇到了困难。

在 App_Code 文件夹内的 RMB.cshtml 内:

在我的 index.cshtml 视图中:

这给了我一个关于 Html 的空引用异常,因为它似乎不知道它是什么。我可以通过将 Html 从视图传递给帮助程序来解决此问题,但我想知道是否有另一种方法让我的共享 html 帮助程序能够引用 Html 而无需将其传递给我编写的任何帮助程序?

为了完整起见,这里是工作解决方法:

在 App_Code 的 RMB.cshtml 中

在 index.cshtml 视图中

0 投票
2 回答
2498 浏览

asp.net - 如何将 HTML 片段(作为委托?)传递给声明性 Razor Helper?

我一直在编写一些声明性的Razor Helpers(使用 @helper 语法),用于现在支持 Razor 视图引擎的Umbraco 4.7(尽管我认为这同样适用于 WebMatrix 或 ASP.NET MVC)。他们都工作正常。但是,我想让它们更灵活一点,以便我可以将一个 HTML 片段传递给它们,该片段可以“包装”在输出周围(但仅在有输出时)。例如,我有一个助手(这里非常简化),它可以从一些参数生成一个 HTML 链接:

调用@LinkHelper.HtmlLink("http://www.google.com/", "Google")将生成 HTML 输出<a href="http://www.google.com/">Google</a>

不过,如果我可以选择传入一个 HTML 片段,只要 URL 有值,该片段就会包裹在生成的超链接 HTML 周围,这将是一件好事。我基本上希望能够做这样的事情:

并获得输出

或者@LinkHelper.HtmlLink("", "", @<li>@link</li>)

并且根本没有输出。

我在 Phil Haacked 的博客中阅读了有关Templated Razor Delegates的文章,但无法掌握如何在这种情况下使用它们——如果确实有可能的话。我觉得我错过了一些东西或在错误的树上吠叫。

0 投票
1 回答
1564 浏览

asp.net-mvc - 在多个 mvc web 项目之间共享一个 razor 声明式助手

假设我有 2 个 MVC Web 项目(web1 和 web2)和 1 个包含共享视图(常见)的项目(使用 David Ebbo 的 razorgenerator
web1 和 web2 都有一个 test.cshtml 文件。两个 test.cshtml 文件中的几个代码块完全相同。
我试图找出是否可以在不同项目中的几个 cshtml 文件之间共享声明性帮助器(@helper) 。因此,在我的 App_Code 中放置一个 cshtml 文件并没有帮助(我需要在每个 Web 项目中有 1 个,这显然不是我想要的)。
我知道我可以在我的“通用”项目中创建一堆共享的部分视图,但是创建 20 个 cshtml 文件似乎有点开销,每个文件都包含非常小的部分 html。
我知道我可以创建一个标准的辅助方法static string GenerateAPieceOfHtml(this HtmlHelper helper, ....)

有一阵子我以为我遇到了一个可以让我这样做的答案。但正如我在评论中所写,该代码没有为我编译。

我希望我的问题很清楚:)

[更新]
正如 csharpsi 在评论中所问的那样。我确实尝试了另一篇文章中的代码,但它没有为我吐出任何 HTML。由于我开始认为该答案可能会起作用,因为它有 13 个赞成票,所以我决定再试一次。
我再次没有得到任何输出,但后来我尝试了一点不同。成功!
我正在尝试这个(它不会在页面上吐出任何 html):

这是可以工作的版本:

其他有效的版本:

这个问题我该怎么办?删除它?自己写答案?

0 投票
1 回答
776 浏览

asp.net-mvc-3 - 在 MVC3 中测试自定义 Razor 助手

我根据此处此处的说明创建了一个自定义助手。这是它的外观片段(ThemeHelper.cs)

按照说明,我已将其放在 App_Code 中。我可以在我的视图中使用这些助手,这就是我想要的。

现在我的问题是,我该如何测试这个东西?例如,我不能反射性地获取ThemeHelper类​​的实例,无论是在当前程序集中还是通过反射性访问App_Codeor__Code程序集(两者都没有实际返回)。

理想情况下,我想以某种方式调用这些函数并验证结果/HTML。我有一个框架(HtmlUnit 2.7 的 C# 版本),允许我请求 URL 并验证 HTML。

有没有办法测试我的自定义助手?我想写一些类似的东西:

0 投票
0 回答
140 浏览

c# - 我可以在声明式助手中拥有私有函数或私有声明式助手吗?

可能重复:
在 Razor ASP.Net MVC3 的另一个视图中使用 @helpers

我的环境:带有 Razor 的 ASP.NET MVC3。

我在App_Data目录中的声明性帮助程序中有一些可重用的视图逻辑,它们被定义为@helper bar() { /* markup */ }公开的,供任何视图使用。

此外,在常规 Razor 视图中,我可以这样编写“私人”助手:

我想在我的声明性帮助程序中包含“私有”函数,或者,我想在我的声明性帮助程序文件中包含“私有”声明性帮助程序。另一种方法是编写常规帮助程序类——但在这种情况下我更喜欢标记,因为它不那么冗长且更易于维护。

你为什么要这样做?你有一个视图,你想引入一些标记;这是通过引用声明性助手来完成的。但是该 DH 位于一个文件中,其中包含使用通用标记的其他 DH。因此,您希望将所有共性移到一个地方:一个“私有”声明性函数/助手,只有该文件中的 DH 才能看到。

0 投票
3 回答
3922 浏览

c# - 带有 Javascsript 操作的 ASP.NET MVC 3 中的 HTML 助手

我在 Helpers.cshtml 文件中有很多 HTML 助手,但是一些助手 (html) 需要一些 jquery 操作,那么我如何在 helpers.cshtml 中调用 jquery,这可能吗?

我知道我们可以将 js 文件保留在标题或特定页面中,但我不想那样做,我只想在加载特定帮助程序的页面上使用 jquery 或 javascript。

有人对此有想法吗?我的场景是,我有列表框控件,可以从助手正确加载,但我需要将自定义主题应用于列表框。

再清楚一点

0 投票
1 回答
686 浏览

asp.net-mvc-3 - 将模型变量引用到.net mvc3中的全局变量值

带着好奇心......我正在寻找一个临时解决方案,这将导致系统端控制器的扩展。

ia mvc3.net 基于剃须刀的项目具有 100 多个类文件所有类文件(模型)都有一个系统字段

具体的

目前用户访问控制尚未构建,最终用户访问控制器将并假设填写此变量。

我需要在表单插入、更新、删除期间修复上述所有变量的值

有什么地方可以创建一个类并为其设置默认值吗?我创建了一个

现在的问题是我如何在下面的代码中默认它,当我插入模型时

使用控制器:用户将填写除系统字段 c_by、u_by 等之外的所有其他内容...


我如何默认

`

其中 usr_myapp 由

部分类,我是从 edmx 一代得到的,我应该全部改变吗?

一个迷失在奇妙世界中的人