小编Ash*_*Ash的帖子

网络用户的期望

在设计一个好的Web GUI时,我们对最终用户的期望是什么?

我想出了以下内容,但我想知道是否还有其他可以暗示的内容......

  • 如果我点击一个超链接,它将带我到这个页面的另一页/部分
  • 如果我勾选/取消勾选一个复选框,它可能会改变页面状态(启用/禁用元素)
  • 如果我点击一个按钮,我希望它能对数据做些什么.
  • 如果我点击一个按钮,我希望立即发生一些事情(无论是当前页面还是我被带到另一页面)
  • 如果我点击了超链接并将它带到了另一个页面,我希望能够使用"返回"按钮返回上一页,其状态类似于我留下的状态
  • 如果我在表单中更改某些内容,我可以根据需要将其更改回之前的值
  • 除非我点击"提交"按钮,否则我的数据不会发生任何变化.
  • 如果我为一个页面添加书签/收藏,那么每次访问它时都应显示相同的相关数据
  • 如果文本带有下划线并且看起来像链接,那么它应该是一个链接并作为一个链接

这个问题背后的原因更多的是"来自地狱的用户界面".例如,我遇到过检查记录旁边的复选框的页面,将通过ajax直接删除它.对我来说,这似乎是错误的,复选框是一个切换 - 删除操作肯定不是!

user-interface

7
推荐指数
2
解决办法
323
查看次数

确定App是否作为"clickonce"应用程序运行

我正在编写一个库(c#.net 4.0),用于许多应用程序.其中一个要求是库会根据应用程序是否已部署并通过clickonce运行而向调用返回稍有不同的结果.

我已经进行了搜索,但无法找到程序集可以确定"托管"应用程序是否部署了clickonce的任何方式.

任何指针将不胜感激.

c# clickonce

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

您始终在杀手级应用中使用的数据库表/字段

我希望在这里获得一些集体经验,那么您在数据库设计中总是包含什么(如果有的话)实用程序表或公共字段?

一个例子是我总是包含一个App_Errors表来存储任何未捕获的异常信息,以及一个App_Audit存储所有编辑信息的表.

我(在我自己的脑海中)提出了包括RecordCreatedDateRecordLastEditedDate在每个数据表上的好处,但没有得出关于信息是否真的有用的任何结论.

提出更多方向的问题 - 我目前的重点是全球可访问的Web应用程序(想想社交网络).

TA!

database-design web-applications

5
推荐指数
2
解决办法
429
查看次数

将Web上下文传递给ASP MVC应用程序中的"服务"

我正在尝试找到一种方法将Web当前的http上下文传递给服务类(或者通过引用它来初始化类).我这样做是为了抽象应用程序的其余部分,而不是需要了解有关http上下文的任何信息.

我也希望使用TDD测试服务,可能使用其中一个Mockable框架.因此,最好使用接口而不是实际的类.

我想要实现的一个例子:

class WebInstanceService 
{
    private IHttpContext _Context;        

    public WebInstanceService( ... , IHttpContext HttpContext )
    {
        ....
        _Context = HttpContext;
    }

    // Methods...
    public string GetInstanceVariable(string VariableName)
    {
         return _Context.Current.Session[VariableName];
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的一个主要问题是没有IHttpContext,.net http上下文是一个抽象类的子类,不能被模拟(很容易?).

另一个问题是我无法初始化类的全局实例,因为上下文与大多数请求无关.

我可以使类静态,并要求将Context传递给每个函数,因为它被称为ie

public static string GetInstanceVariable(string VariableName, HttpContext Context) 
{ ... }
Run Code Online (Sandbox Code Playgroud)

但是这并没有使类更容易测试,我仍然需要创建一个HttpContext,另外任何想要使用这个类的非Web感知服务突然需要能够检索上下文,要求它们紧密耦合到Web服务器 - 首先想要创建这个类的全部原因.

我对所有建议持开放态度 - 特别是那些人们知道的便于进行tdd测试的建议.人们会怎么建议我解决这个问题?

干杯

.net c# tdd asp.net-mvc mocking

5
推荐指数
1
解决办法
2209
查看次数

WPF 模态对话框关闭意外结束应用程序

当从主程序窗口生成的模式对话框正常关闭时,我的应用程序意外结束。不会引发未处理的异常,并且不会在主应用程序窗口上触发任何Closing或事件。Closed

本质上,我有一个主/外壳窗口,它是使用 ShellWindow.Show() 在应用程序代码中启动的。通过菜单,用户可以生成一个自定义打开对话框,这是一个创建的新窗口,然后使用 ShowDialog 显示(窗口所有者设置为 shell 窗口的所有者)。

当对话框关闭时(在内部,通过调用 _modalDialogWindow.Close() 的命令),应用程序将关闭,而我只期望模式对话框已关闭。

调试代码表明 ShellWindow 已从内存中转储,因为 _modalDialogWindow.Close() 之后执行的下一行代码是静态程序代码中的 Application.Run() 之外的代码。

如果有人有任何想法,我愿意尝试任何事情。

wpf modal-dialog

5
推荐指数
1
解决办法
1512
查看次数

.NET线程与锁定和等待

我试图让我的GUI线程在长时间运行操作期间保持响应.这些操作必须是同步的,因为它们通常是在请求的操作完成之前需要完成的操作.

我试图用后台工作人员,监视器和锁定对象来做这件事.本质上我想在长时间运行的进程启动之前启动一个计时器,在后台线程中启动长时间运行的进程,并等待后台工作线程表示它已经完成,然后再继续使用相关代码.如果长时间运行的过程花费的时间过长,则向用户显示"加载..."对话框,以便他们知道应用程序没有崩溃.

一个例子可能是图形包中的用户点击按钮,在我们可以绘制图像然后打印pi计算到顶部的一百万个小数位之前,必须从磁盘加载大图像.

我无法从磁盘异步加载图像,这将使UI保持响应,因为用户可以启动另一个操作,这会扰乱程序状态(即撤消操作).

可以简单地将光标更改为沙漏并完成它,但在许多情况下我希望用户也可以取消操作 - 带有取消按钮的"正在加载..."对话会照顾这很好.


我最初的目标是使用一个锁对象,System.Threading.Monitor.Enter()以便UI线程等待长时间运行的线程完成,然后继续执行.如果计时器在长时间运行的线程完成之前触发,则UI线程仍可用于处理事件并在屏幕上绘制对话框.

我遇到的问题是,在UI线程尝试获取锁定之前,我无法让后台工作程序锁定对象.

相反,我正在使用一些非常黑盒子的第三方代码进行处理.因此,我不能将代码定制为线程友好的并报告其进度或支持取消.


我的问题

是否有任何经过验证的方式包装第三方代码,以便UI线程保持响应,如果需要,我可以显示取消对话? - 将会有许多实例,其中长时间运行的操作几乎立即完成,并且不需要显示对话框.


更进一步的澄清

我为什么要这样做?异步操作是Windows应用程序的宠儿......

好吧,我不想在启动长时间运行异步操作时锁定用户界面的每个方面,然后在完成后解锁每个方面.我可以 - 通过设置光标或物理禁用所有的删除等等,但实际上我更愿意能够简单地将调用包装在'某些对象/方法等'中,这将允许弹出一个对话框(如果仅当)操作花费足够长的时间才能影响用户.我不必担心执行流程的变化,我仍然(总体上)能够在代码中维护原子操作(不会在回调中分开)并且仍然具有"响应"UI.

我可以理解为什么到目前为止我在将BackgroundWorker/Thread制作成同步阻塞线程方面没有成功,但我确实担心我不得不while(true){ sleep() }在GUI线程中沿着路线走,而不是使用锁.

.net c# multithreading locking

4
推荐指数
1
解决办法
2465
查看次数

具有GUI和控制台模式的WPF应用程序

我知道从控制台窗口运行WPF应用程序并输出到控制台而不是显示gui(又名本问题)存在问题.

该问题的"结论"(似乎已经得到很好的研究和提出)是可以从应用程序输出到控制台,但它会立即返回 - 而不是像控制台应用程序那样阻塞.

但是,查看Visual Studio特别是'devenv.exe'进程,这正是它所做的事情:

  • 从资源管理器中双击devenv.exe只运行应用程序gui.
  • 在控制台(cmd.exe)窗口中
    • devenv.exe<enter> 运行Gui立即返回控制台
    • devenv.exe /?<enter> 在控制台中显示帮助,仅在显示所有输出后返回.
    • devenv.exe test.txt<enter> 运行Gui(加载test.txt)立即返回控制台

因此,必须有可能以某种方式在我们自己的应用程序中出现这种行为!有谁知道怎么样?

.net wpf console

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