小编ppe*_*rov的帖子

剃刀模板,视图和angular.js

TL; DR

使用.NET Razor视图和AngularJS时的最佳做法是什么?

上下文

我们正在使用带有razor的mvc4 开发一个公共网站(不是内部网应用程序),我们对客户端脚本不是很熟悉,所以我们从我们所知道的开始:jQuery.但现在事情变得越来越复杂,我们想切换到AngularJS.

在.NET部分,我们使用Razor模板和UIHintAttribute(加上一些自定义模板)来呈现正确的html"控件".我们还添加了自定义html属性,以便为jQuery部分提供额外信息(例如title工具提示....)

所以我们已经使用了一种设置用户界面行为的声明方式,这就是为什么AngularJS似乎是一个不错的选择.

问题

既然我们已经有模型定义服务器端,并且由于AngularJS也使用模型,它不会强迫我们重复代码吗?

我们如何处理数据绑定功能,因为我们已经做了一些绑定服务器端(在视图中).我们是否应该创建一个完全异步的应用程序,从AngularJS调用AJAX来加载数据,或者我们可以将两者混合使用?

在尝试使用这两种技术时,我们应该注意什么?

我在Google上做过一些研究,但是我找不到将Razor视图和模板与AngularJS混合的详细方法......也许这不是一件好事吗?

asp.net-mvc restful-architecture angularjs

14
推荐指数
2
解决办法
2万
查看次数

为什么我的vspackage的上下文菜单没有显示

我已经创建了一个包,我想在Code Window上下文菜单中添加一个菜单.

经过一番搜索后,我找到了几篇解释如何做的文章.问题是,我无法让它工作....

以下是我在vsct文件中的声明:

  <Button guid="guidDALGeneratorPkgCmdSet" id="cmdidDataFlow" priority="0x0100" type="Button">
    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_CODEWIN"/>
    <CommandFlag>DynamicVisibility</CommandFlag>
    <Strings>
      <CommandName>cmdidDataFlow</CommandName>
      <ButtonText>Show data flow</ButtonText>
    </Strings>
  </Button>
Run Code Online (Sandbox Code Playgroud)

和符号:

<GuidSymbol name="guidDALGeneratorPkgCmdSet" value="{d3269a87-a721-49a5-800b-0464fbdfd313}">

  <IDSymbol name="MyMenuGroup" value="0x1020" />
  <IDSymbol name="cmdidDALGenerator" value="0x0101" />
  <IDSymbol name="cmdidDataFlow" value="0x0102" />
</GuidSymbol>
Run Code Online (Sandbox Code Playgroud)

以下是我在Package课堂上添加菜单的方法:

CommandID dataFlowCID = new CommandID(GuidList.guidDALGeneratorPkgCmdSet, (int)PkgCmdIDList.cmdidDataFlow);
OleMenuCommand dataFlowMenu = new OleMenuCommand(showDataFlow, dataFlowCID);
dataFlowMenu.BeforeQueryStatus += new EventHandler(dataFlowMenu_BeforeQueryStatus);
mcs.AddCommand(dataFlowMenu);
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?我必须错过一些东西,因为几乎每个样本(以及关于这个主题的SO答案)都建议在包装中添加一个菜单......

我尝试过的:

  • 首先创建一个组,然后在该组中添加我的菜单:不起作用
  • 检查我是否使用正确的GUID(使用此技巧)
  • 使用IDG_VS_MENU_CONTEXTMENUS而不是IDM_VS_CTXT_CODEWIN(看完这篇文章后:使用vsx如何使用命令创建子菜单?)
  • 给与第二个菜单实际工作的菜单相同的父级,仍然没有显示....
  • 关于我的问题的很多不成功的谷歌搜索...

另外你可以看到我使用这个BeforeQueryStatus …

c# visual-studio-2010 vspackage

10
推荐指数
2
解决办法
1557
查看次数

从基类方法克隆派生类

我有一个抽象的基类Base,它有一些共同的属性,许多派生的基类实现不同的逻辑但很少有其他字段.

public abstract Base
{
    protected int field1;
    protected int field2;
    ....

    protected Base() { ... }
}
Run Code Online (Sandbox Code Playgroud)

有时我需要克隆派生类.所以我的猜测是,只需Clone在我的基类中创建一个虚方法,只在具有附加字段的派生类中覆盖它,但当然我的Base类不再是抽象的(这不是问题,因为它只有一个protected构造函数).

public Base
{
    protected int field1;
    protected int field2;
    ....

    protected Base() { ... }

    public virtual Base Clone() { return new Base(); }
}

public A : Base { }
public B : Base { }
Run Code Online (Sandbox Code Playgroud)
  1. 问题是,因为我无法知道我的Base类中派生类的类型,Base即使我在派生类上调用它,也不会导致类实例?(a.Clone();)(实际上在测试之后这是发生了什么,但也许我的测试没有很好地设计,这就是为什么我对它有疑问)

  2. 是否有一种很好的方法(模式)来实现一个基本Clone方法,它可以像我期望的那样工作,或者我必须在每个派生类中编写相同的代码(我真的想避免这种情况......)

谢谢你的帮助

c# oop inheritance

8
推荐指数
2
解决办法
1万
查看次数