【问题标题】:Visual Studio JavaScript Intelliense for VB generated controlsVisual Studio JavaScript Intellisense for VB 生成的控件
【发布时间】:2014-06-30 00:22:47
【问题描述】:

我们有一个用户控制系统,允许我们创建用户控件,这些控件生成用户控件运行所需的 HTML 和 JS。初始值或选项在 VB/C# 中设置,控件呈现如下:

@Code
  Dim ms As New ControlModels.MultiSelectModel("ms")
  UserControlHelpers.RenderMultiSelect(ms)
End Code

此时创建了一个JS用户控件,设置为变量“ms”。这就是在 JS 中创建的内容:

var ms = new userControls.MultiSelect("ms");

我们可以通过 JS 中的这个变量访问用户控件的值,它对我们来说非常有效。

问题是 VS 的智能感知无法识别它是什么类型的对象,也无法向新创建的对象提供任何信息。如果我们直接在页面上创建对象而不使用 VB 来创建和渲染控件,智能感知能够知道它是什么类型的对象,并为我们提供该对象的方法和属性。

我们可以做些什么来让我们获得正确的智能?我知道我们可以将自己的侦听器添加到 VS,但我看不到它获取任何有用信息的方法。

【问题讨论】:

    标签: javascript asp.net-mvc asp.net-mvc-4 visual-studio-2012 intellisense


    【解决方案1】:

    您希望像对待强类型和编译的 VBJavaScript 一样对待松散类型的 JavaScript强>C#

    这不仅仅是一个智能感知的问题。这是让工具预测动态类型的挑战。

    var ms = new userControls.MultiSelect("ms");
    

    您在 ASP.NET 中创建类型,然后将它们序列化为 JSON 并呈现客户端指示。但是如果你使用的是Intelli-sense,那么ASP.NET代码还没有运行,JavaScript em>,作为一种动态语言,会冷静地等待并评估您返回的通用 var

    您实际上是在钓upstream 的猎物。


    您仍然有选择:

    为了获得 Intelli-sense 的好处,您必须提前对 userControls.MultiSelect() 进行原型设计。

    参考understanding-prototypes-in-javascript

    另外,看看这个 VS2012 JavaScript Intellisense 工具:

    【讨论】:

      猜你喜欢
      • 2011-11-04
      • 1970-01-01
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      • 2021-06-02
      • 2014-03-25
      • 2012-10-23
      • 2013-02-09
      相关资源
      最近更新 更多