小编Edw*_*uay的帖子

ASP.NET MVC中runat ="server"标签的状态是什么?

ASP.NET MVC上的一些文本声明"没有runat服务器标签",即使这篇MSDN文章也说过,在该语句的正上方,在HEAD元素中有一个带有runat服务器标签的代码示例:

在我读过的StackOverflow对话中

"你想使用"runat = server"控件的事实意味着你应该做一个传统的ASP.NET应用程序.

当然,在Site.Master页面中,ContentPlaceHolders中有runat服务器属性.

在runat服务器方面我唯一看不到ASP.NET MVC的是每个.aspx页面/视图上普遍存在的FORM runat ="server"标签.

但是,ASP.NET MVC中的其余runat服务器标签怎么样呢?当人们说ASP.NET MVC没有这些时,人们的意思是什么?

.net asp.net-mvc runatserver

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

此列表是否正确理解了Microsoft当前的应用程序部署选项?

我试图了解Microsoft目前提供的许多应用程序部署选项.

做了一些研究,发现了数十个令人困惑的术语:

  • "WPF App"
  • "ClickOnce App"
  • "WPF ClickOnce App"
  • "MSI App"
  • "XBAP App"
  • "使用ClickOnce部署的XBAP应用程序"
  • "已安装的ClickOnce应用程序"
  • "WPF Web App"
  • "ASP.NET Web App"
  • "ASP.NET MVC Web App"
  • "Silverlight App"
  • "完整的WPF应用程序"
  • "具有同步框架支持的ClickOnce"

我将我的发现清理成以下七种不同的方法.希望得到反馈:

  1. "使用MSI部署WPF应用程序"(允许大量安装选项)

    • 目标计算机上需要MSI运行时
    • 带选项的向导
    • 可以指定每用户或每台机器
    • 可以修改目标计算机上的文件和注册表,仅受管理员设置的访问权限的限制
    • 可以在桌面上放置快捷方式
    • 替换系统文件等使得在目标计算机上轻松进入DLL地狱
    • 更新是一个很大的负面因素:检测可用更新需要额外的工具/自定义编程,而不是内置的
    • 用户不必在线使用应用程序
  2. "使用ClickOnce部署的WPF应用程序":(如果您想要自动更新但在沙箱中运行,则很好)

    • 需要两次单击(单击超链接,单击是),无需用户输入
    • 仅适用于当前用户,不适用于每台机器的安装
    • 桌面上没有快捷方式
    • 出现在程序列表中,如正常应用程序
    • 应用程序文件始终复制到../My Documents/My Applications
    • 应用程序的快捷方式将放在"开始"菜单/公司名称中
    • 无法修改目标计算机,与操作系统隔离
    • 自动检测并更新较新版本
    • 简单地将它们放在网络服务器上(客户端检测并获取它们)
    • 需要.NET 2.0或更高版本
    • 与Java Web Start相当
    • 解决了四个问题:(1)易于部署,(2)易于更新,(3)对目标计算机影响小,(4)无需管理员权限.
    • 被认为是"低影响"
    • 如果两个用户在同一台​​计算机上安装了相同的ClickOnce应用程序,则它们不会相互破坏
    • 使用CAS来保证安全
    • 用户不必在线使用应用程序
    • 独立的ClickOnce应用程序现在不能在Firefox和Mac上使用Firefox,因为它需要.NET运行时
    • 限制为单窗口应用程序,因为它们在浏览器中运行
    • 构建ClickOnce清单比Silverlight等更容易,因为IDE几乎可以为您完成所有这些操作; 你只需要在某处托管文件(可以是一个网址;可以是一个网络UNC).
  3. "XBAP App":.xbap文件的xcopy部署,IE和Firefox会立即显示为网页

    • XBAP模型的真正目标是创建一个等同于传统HTML和JavaScript网站(或Flash applet)的WPF
    • 目标计算机只需运行应用程序而无需通过Web浏览器(IE或Firefox)在Web上安装
    • 它们适用于需要非常简单部署的Intranet应用程序,完整的.NET Framework(与Silverlight相对)和浏览器的导航模型.
    • 99%的WPF功能(与Silverlight的WPF功能子集相对)
    • 也可以通过ClickOnce自动部署,但XCOPY更常见
    • YourApp.xbap实际上是ClickOnce部署清单
    • 在沙箱中运行
    • 用户必须在线才能使用应用程序
    • 这些必须是"基于页面"的应用程序,而不是"基于Windows"的应用程序
    • "XBAP似乎只是因为它在浏览器窗口中显示所有内容而在brwoser中运行.这与ActiveX控件(和Silverlight)使用的模型不同,后者在浏览器进程中加载​​."
    • XBAP提供"快速免费"体验,只要安装了.NET …

silverlight wpf xbap

18
推荐指数
1
解决办法
2392
查看次数

如何在Silverlight DatePicker控件中更改日期格式?

这非常有效:

<my:DatePicker IsTodayHighlighted="True" Width="200">
</my:DatePicker> 
Run Code Online (Sandbox Code Playgroud)

但我想格式化日期,如下所示:

<my:DatePicker IsTodayHighlighted="True" Width="200" Format="yyyy-mm-dd">
</my:DatePicker> 
Run Code Online (Sandbox Code Playgroud)

有人知道这个的语法吗?

silverlight datepicker

18
推荐指数
1
解决办法
3万
查看次数

在Vista上获取WCF服务的System.ServiceModel.AddressAccessDeniedException

我们有一个启动WCF服务器的应用程序,应用程序从中读取.

它启动并可以在所有Windows XP计算机上正常读取.

但是,在我们的Vista机器上,我们得到:

System.ServiceModel.AddressAccessDeniedException
"The process has no rights to this namespace."
System.Net.HttpListenerException
Run Code Online (Sandbox Code Playgroud)

URL位于localhost:

HTTP://本地主机:8731/ABC.Testing.Business.Core/SecurityService/WSDL

错误消息发送给我们:

http://msdn.microsoft.com/en-us/library/ms733768.aspx

我们做了它说的话:

netsh http add urlacl url=... user=...
Run Code Online (Sandbox Code Playgroud)

这改变了权利,但WCF服务仍无法在Vista上启动.

有没有人有这方面的经验可以推动我们前进?谢谢.

wcf

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

您是否知道使用MVVM的任何真实的,有用的WPF/Silverlight应用程序?

我正在寻找完整应用程序的代码,这些应用程序(1)使用MVVM模式,(2)可用于WPF/Silverlight/MVVM初学者.到目前为止我只发现:

  • Crack.NET - 运行时调试和脚本编写工具(有用但非常复杂)
  • CipherText - WPF密码管理器(完美但用VB.NET编写)

还有什么其他的?

优选地使用MVVM但具有完整感觉的较小辅助应用程序或工具,可能具有WPF/Silverlight图形/动画优点等,其不仅显示正在使用的MVVM概念,而且显示在现实世界的已完成应用程序的上下文中

我的贡献

感谢所有提示,我收集了15个MVVM代码示例列表,并在此处发布:

WPF/Silverlight代码示例概述,可帮助您学习MVVM.

silverlight wpf mvvm

18
推荐指数
1
解决办法
3834
查看次数

胖模型,瘦瘦的ViewModel和哑视图,最好的MVVM方法?

通过对这个问题的慷慨帮助,我整理了以下MVVM结构,它在XAML(当前日期/时间)中实时显示模型的变化,非常好.

这方面的一个凉爽的优势建立的是,当你看到你的观点在设计模式中的Visual Studio或混合的,你看时间流逝的,这意味着在设计时可以访问从模型的实时数据.

在让它工作的过程中,我惊讶地发现大部分批量从我的ViewModel移动到我的模型中,包括INotifyPropertyChange的实现.另一个变化是我不再绑定ViewModel上的属性而是绑定到方法.

所以目前这是我最喜欢的MVVM风格:

  1. 视野愚蠢:

    • 您需要从模型中获取每个对象的一个​​ObjectDataProvider
    • 每个ObjectDataProvider映射到ViewModel上的方法(不是属性)
    • no x:XAML元素中的名称属性
  2. ViewModel是瘦的:

    • ViewModel中唯一的东西是视图绑定的方法
  3. 型号很胖:

    • 该模型在其每个属性上实现INotifyPropertyChanged.
    • 对于ViewModel上的每个方法(例如GetCurrentCustomer),模型中都有相应的单例方法(例如GetCurrentCustomer).
    • 该模型负责处理任何实时线程功能,如本例所示

问题:

  1. 那些在真实场景中实施MVVM的人,这是你已经确定的基本结构,如果没有,你的变化如何?
  2. 您如何扩展它以包括路由命令和路由事件?

如果您只是将XAML和代码复制到新的WPF项目中,则以下代码将起作用.

XAML:

<Window x:Class="TestBinding99382.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:TestBinding99382"
    Title="Window1" Height="300" Width="300">

    <Window.Resources>
        <ObjectDataProvider 
             x:Key="DataSourceCustomer" 
             ObjectType="{x:Type local:ShowCustomerViewModel}" 
                        MethodName="GetCurrentCustomer"/>
    </Window.Resources>

    <DockPanel DataContext="{StaticResource DataSourceCustomer}">
        <StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
            <TextBlock Text="{Binding Path=FirstName}"/>
            <TextBlock Text=" "/>
            <TextBlock Text="{Binding Path=LastName}"/>
        </StackPanel>
        <StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
            <TextBlock Text="{Binding Path=TimeOfMostRecentActivity}"/>
        </StackPanel>

    </DockPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

代码背后:

using …
Run Code Online (Sandbox Code Playgroud)

architecture wpf mvvm

18
推荐指数
1
解决办法
5140
查看次数

为什么MVF中的事件和命令不受WPF/Visual Studio支持?

在使用MVVM模式创建WPF应用程序时,似乎我必须自己收集必要的工具,甚至开始最基本的事件处理,例如

  • 我从这里得到的附属行为
  • DelegateCommands我从这里得到

现在我正在寻找一些方法来处理ComboBox中的ItemSelected事件,并获得了一些技巧和变通方法的建议(使用XAML触发器或将其他元素绑定到所选项目等).好吧,我可以走这条路,但它似乎正在重新发明轮子.只有一个我可以在我的ViewModel中处理ItemSelected命令会很好.

我是否缺少一些标准工具,或者每个人都在使用WPF进行MVVM,基本上构建和组合他们自己的工具集合,这样他们就可以使用事件和命令完成最简单的管道任务,这些事情在代码隐藏中只需要几行用Click ="eventHandler"?

wpf events command mvvm

18
推荐指数
2
解决办法
5496
查看次数

这在Prism/Unity中意味着什么:Container.Resolve <ShellPresenter>()

(来自Prism V2 StockTrader示例应用程序中的StockTraderRIBootstrapper.cs文件)

这有什么区别:

ShellPresenter presenter = new ShellPresenter();
Run Code Online (Sandbox Code Playgroud)

还有这个:

ShellPresenter presenter = Container.Resolve<ShellPresenter>();
Run Code Online (Sandbox Code Playgroud)
  • 我理解第二个例子是将容器视为工厂,走到它说"我需要一个ShellPresenter类型的实例化对象".
  • 但是,如果我需要发送参数,相当于"new ShellPresenter(1,true)"等等,该怎么办?
  • 而且由于必须告诉Container有关ShellPresenter的信息,我希望在项目中找到ShellPresenter类在容器中注册的地方,例如我期待的

这样的事情:

Container.RegisterType<IShellPresenter, ShellPresenter>();
Run Code Online (Sandbox Code Playgroud)

但发现它无处可寻.那么容器如何才能了解这些类型呢?它们可以解决它们吗?我在自己的项目中重建了这个并获得"依赖失败的解决方案"错误,那么我在哪里需要注册这个依赖呢?

这里的任何方向/讨论都会有所帮助.

原因不明的答案:

所以,在bootstrapper中,当我注册Shell本身时:

protected override void ConfigureContainer()
{
    Container.RegisterType<IShellView, Shell>();
    base.ConfigureContainer();
}
Run Code Online (Sandbox Code Playgroud)

然后Container可以解析ShellPresenter类型.那么当我注册Shell类型时,ShellPresenter类型是如何注册的?

令人惊讶的答案:

好的,所以事实证明你不必注册你想要解决的类型,但你必须注册传递给你想要解决的类型的构造函数的参数(接口)类型,即因为我注入IShellView接口进入我的ShellPresenter的构造函数,我需要注册IShellView类型而不是IShellPresenter类型:

public ShellPresenter(IShellView view) ...
Run Code Online (Sandbox Code Playgroud)

我通过尝试解决类型测试器测试了这个:

Tester tester = Container.Resolve<Tester>();
Run Code Online (Sandbox Code Playgroud)

只要我将SomeClass注入其构造函数:

public Tester(ISomeClass someClass)
Run Code Online (Sandbox Code Playgroud)

在我用容器注册SomeClass之前,我得到了未解决的依赖错误:

Container.RegisterType<ISomeClass, SomeClass>();
Run Code Online (Sandbox Code Playgroud)

然后它工作.这和教育一样令人惊讶.需要沉入其中.我要去喝杯咖啡并考虑一下.

如果有人能详细说明为什么会这样,那将非常感激.

containers prism inversion-of-control unity-container

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

Netbeans for PHP中的"类概要视图"在哪里?

在Eclipse中,我有一个类大纲视图,它向我展示了我的班级成员:

替代文字

我安装了NetBeans 6.9.1,但找不到一个窗口,显示我正在处理的类中的方法列表等.我在哪里可以找到这个?

替代文字

php netbeans

17
推荐指数
1
解决办法
7016
查看次数

如何使JavaScript代码执行等到加载并执行带脚本的AJAX请求?

在我的应用程序中,我Ext.Ajax.request用来加载我执行的脚本eval.

问题是,由于AJAX请求需要一段时间才能完成,之后执行的代码需要通过AJAX加载的脚本中的变量.在这个例子中,我展示了这种情况.如何更改此代码,以便在AJAX等待直到AJAX调用中的脚本加载并执行后执行JavaScript?

testEvalIssue_script.htm:

<script type="text/javascript">
    console.log('2. inside the ajax-loaded script');
</script>
Run Code Online (Sandbox Code Playgroud)

main.htm中:

<html>
    <head>
        <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>
        <script type="text/javascript" src="ext/ext-all-debug.js"></script>
        <script type="text/javascript">
            function loadViewViaAjax(url) {
                Ext.Ajax.request({
                    url: url,
                    success: function(objServerResponse) {
                        var responseText = objServerResponse.responseText;
                        var scripts, scriptsFinder=/<script[^>]*>([\s\S]+)<\/script>/gi;
                        while(scripts=scriptsFinder.exec(responseText)) {
                            eval.call(window,scripts[1]);
                        }
                    }
                });
            }

            console.log('1. before loading ajax script');
            loadViewViaAjax('testEvalIssue_script.htm');
            console.log('3. after loading ajax script');
        </script>
    </head>
    <body>

    </body>

</html>
Run Code Online (Sandbox Code Playgroud)

输出:

1. before loading ajax script
3. after loading ajax script
2. inside the ajax-loaded …
Run Code Online (Sandbox Code Playgroud)

javascript ajax extjs callback

17
推荐指数
1
解决办法
6万
查看次数