问题标签 [asp.net-mvc-3]

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 投票
3 回答
4949 浏览

c# - ASP.NET MVC:_layout.cshtml 中从给定控制器获取变量的逻辑

MVC 新手,如果术语有点偏离,请原谅我。

我正在使用 ASP.NET MVC3 beta 和 VS 2010。

我不确定这是概念错误、语法错误还是什么错误。

基本上,我想做的是,对于_layout.cshtml,我想为任何其ActionResult 将ViewModel.UseJQuery 设置为true 的控制器包含jQuery 脚本。

我是新手,所以我可能是错的,但这似乎是最好的方法(我目前正在尝试)是:

_layout.cshtml 文件

在各种控制器中

但是,这给了我一个关于必须将 null 转换为布尔值的错误(我假设它没有找到 UseJQuery 标志)。

所以,我的问题有两个:

  1. 这是解决这个问题的正确方法吗?
  2. 如果是这样,我在语法上哪里出错了?

我确信这可能只是初学者的痛苦,但我环顾四周,一开始找不到解决方案(我有一本 ASP.NET MVC 书在订购——保证!)

提前感谢您的帮助!

编辑/更新:

这在 MVC 2 和 3 之间可能有所不同吗?例如,开箱即用的 HomeController.cs 的 Index() ActionResult 是:

编辑/更新:发现问题!

哦!我意识到代码在设置变量时有效,但我一直在尝试使用未设置的变量(这当然会导致传递空值而不是 false)。

所以,现在的问题是,我在 _layout.cshtml 中放置了什么逻辑,可以让我捕获 null 并将其设置为 false 呢?

我在想一些事情:

但是,这有一些问题:

  • IsNull() 是正确的函数,还是我的语法错误?(在 VS 2010 中缺少对 Razor 的语法支持让我很生气,哈哈)
  • 如何在布局中本地设置 UseJQuery 变量?我怀疑 View.UseJQuery 会起作用,因为这是控制器设置的,对吧?

无论如何,我试图设置上述值的错误是“无效的表达式术语'='”,所以我相信 ViewModel 变量集合可能对 View 是只读的?

——肖恩

0 投票
1 回答
604 浏览

validation - 如何在 MVC3 中处理服务层验证

我正在开发一个项目,该项目需要为同一模型设置不同的验证集,我们正在努力寻找处理它的最佳解决方案。

一个简化的示例可能是使用我们的客户 DTO:

在我们的第一个视图中,所有字段都是必需的,因为它们在 DTO 中使用 DataAnnotations 显示。

在我们的第二个视图中,FirstName 和 LastName 可能是必需的,但 Title 是可选的,甚至可能不会在视图中表示。

复杂之处在于,我们希望在我们的服务层中存在验证规则(以便我们可以在稍后使用相同的验证提供 API),它可以访问数据注释,并针对它们进行验证,报告备份如果他们不验证,则发送到 UI。

到目前为止,获胜的方法是:

  • 每个视图都有一个专用的视图模型,DataAnnotations 存在于该视图模型上。
  • 然后,视图模型使用 Automapper 之类的东西映射我们的域对象。
  • 然后将域对象传递给存储库和服务以对它们执行操作。

这也意味着:

  • 验证不会发生在服务层,因为当对象到达那里时,它们将是域对象而不是视图模型。

有没有更好的方法来为企业应用程序处理这个问题?我们还没有找到解决办法。

0 投票
2 回答
1168 浏览

asp.net-mvc - ASP.NET MVC 3 和 HTML 帮助程序扩展

我正在尝试弄清楚我是否误解了有关 ASP.NET MVC 的某些内容,或者我是否在 ASP.NET MVC Beta 3 中发现了某种错误。我在使用 HTML Helper 时遇到了 PartialView 拾取错误模型的问题扩展

我的控制器代码如下所示:

在这是一个插入的情况下,属性vm.Id以 -1 开始,在调用MapGeneralViewModel.ToModel之后,它已被持久化到数据库中,并且 query.Id 具有适当的值。

对MapSettingsViewModel.FromModel的调用返回一个新的视图模型,并且我检查了 Id 属性是否正确包含新创建的 id 值。

视图的相关位如下所示:

如果我在视图中放置断点,则Model.Id会正确设置为正确的值。

控制器的实际输出(当Model.Id == 70 时)如下所示:

因此,不使用 HTML 助手的值输出是正确的,但是助手输出的值以某种方式获取了传递给控制器​​的视图模型!

我不知道这是怎么回事。我尝试了各种方法:

  • 使用View()而不是PartialView()
  • 将MapGeneralViewModel.FromModel()的结果分配给vm,然后将vm传递给视图
  • 使用<%:<%=
  • vm设置为 null(旧的视图模型仍然被使用)
  • 将传入 id 的值更改为 0(导致在视图中输出 0 而不是 -1)
  • 问题并非特定于名为“Id”的属性,我还测试了具有相同结果的其他字段

我是否对这应该如何工作感到困惑,或者我遇到了 beta 错误?如果它有任何区别,这是在 Win7 64 位机器上的本地 Azure 运行时中运行的。

0 投票
1 回答
2194 浏览

razor - 在 JavaScript 中使用 Razor 视图引擎

使用新的 ASP.NET MVC 3.0 Razor 视图引擎,有没有办法在 javascript 代码中调用它?

在普通视图引擎中,您可以执行类似...

但我找不到任何方法可以用 Razor 做类似的事情。

0 投票
1 回答
234 浏览

production - ASP.NET MVC 3 在生产中?

现在 ASP.NET MVC 3 处于测试阶段,并准备好“上线”。在项目中使用是否安全,尽管没有阻止我对安全性、性能和升级到发布版本的易用性感到好奇。

0 投票
2 回答
495 浏览

asp.net-mvc - ASP.NET MVC 2 纯 jquery 客户端验证

如何仅使用 jquery 连接我的验证?我不想使用 Microsoft ajax。我在这个博客上看到了我想要的东西,但似乎该文件MicrosoftMvcJqueryValidator.js已被弃用或取消。

现在有官方方法可以做到这一点吗?可能使用 asp.net mvc 3。

0 投票
5 回答
2376 浏览

asp.net-mvc-3 - MVC2 - 如何在模板中获取父模型(容器)

我正在使用 DataAnnotations 编写一个 MVC2 应用程序。我有以下模型:

我想为 Bar 创建一个自定义显示模板。我创建了以下模板:

现在,我的问题是Bar 的内部模板我想从我的 model 访问另一个属性。我不想为 FooModel 创建单独的模板,因为我将不得不对所有其他 FooModel 属性进行硬编码。

在使用调试器进行简短调查后,我可以看到:

  1. this.ViewData.ModelMetadata.ContainerTypeFooModel(如预期的那样)
  2. this.ViewData.TemplateInfo有一个非公共属性VisitedObjects (类型为 System.Collections.Generic.HashSet<object>),其中包含两个元素: FooModelDateTime?

如何访问我的 FooModel?我不想使用反射来破解我的方式。

更新:

我已经接受了 mootinator 的回答,因为它在我看来是允许类型安全的最佳解决方案。我也赞成 Tx3 的答案,因为 mootinator 的答案建立在它之上。尽管如此,我认为在这些场景中应该有更好的 MVC 支持,我认为这在现实世界中很常见,但在示例应用程序中却没有。

0 投票
3 回答
22480 浏览

asp.net-mvc - ASP.NET MVC 下拉编辑器模板

我正在寻找使用 MVC 创建下拉列表编辑器模板的最佳方法。似乎有各种方法,但我找不到最好的方法,每个人的做法似乎都不一样。我也将 MVC3 与 Razor 一起使用,因此首选适用于此的方法。

0 投票
2 回答
22078 浏览

asp.net-mvc - Razor 语法是否在 UI 标记中提供了引人注目的优势?

我注意到 Scott Guthrie开始在他的博客上提到 Razor,但我不确定它是否适合我的风格。

当然,对于那些非常习惯于“标准”类型的 ASP.Net 标记(内容占位符和内联代码)的人来说,这是一种相当陌生的风格,但对我来说,它只是感觉需要管理很多额外的页面,而且标记不太清晰。

其他人对此有何感受?您认为在构建新的 MVC 页面时应该认真考虑这一点,还是只是试图解决一个不存在的问题?

0 投票
2 回答
7422 浏览

jquery - 将 Knockout.js 与最新的 jQuery 文件和 ASP.NET MVC 一起使用

我正在尝试将 Knockout.js 与 ASP.NET MVC 3.0 一起使用(标题放弃了,不是吗?!)

http://knockout.js.com

我遇到了一些问题(与新的 jQuery Tmpl 引擎比 ASP.NET MVC 3.0 更相关)。

我在测试中使用了 Steve Sanderson 的示例程序,并且大部分都使用新的 Razor 视图引擎复制了他的结果(我不相信 Razor 与我的问题有任何关系)。

http://blog.stevensanderson.com/2010/07/12/editing-a-variable-length-list-knockout-style/

但是,我想用自然的jquery 绑定做更多事情,而不是 HTML 绑定属性。这在淘汰赛的教程中有详细描述。 http://knockoutjs.com/documentation/template-binding.html

但是,正如它所解释的那样,我无法重现这一点。我将在下面显示我的查看代码。我的问题来自{{foreach (i, gift) gifts}}不起作用的事实。我尝试了许多变体({{foreach (i, gift) gifts()}}正如我在其他示例中看到的那样)。

我正在使用最新 knockout.js的文件。我正在使用jQuery 1.4.3.我正在使用http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.js的模板引擎。但是,我也尝试过使用tmpl.js包含在 knockous.js 网站上的相同文件,并且得到相同的结果。

使用 jQuery 模板时,根据当前规范,模板不会呈现。

在这里可以找到 jQuery 模板标签文档:http: //api.jquery.com/category/plugins/templates/template-tags/

以防有人对我的确切模型感到困惑。如果我替换{{foreach (i, gift) gifts}}为 { {foreach gift}},那么模型会呈现并正确运行,但我不能将 jQuery 本机${property}声明用于任何内容。

HTML