我遇到了一个奇怪的问题....当我使用UpdateModel()或者TryUpdateModel(),一切正常.当我尝试绑定自己(例如MyObject.FirstName = collection["FirstName"])时,我收到"Object reference not set to an instance of an object"错误.
这有点难以解释,所以我将展示代码:
[HandleError]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection collection)
{
try
{
Model.Event evnt = new Redline.RedlineTimeAttack.Model.Event();
//When this is uncommented everything works fine.
//TryUpdateModel<Model.Event>(evnt);
//this will eventually lead to problems
evnt.Description = collection["Description"];
evnt.EndDate = enddate;
evnt.EventName = collection["EventName"];
evnt.IsActive = collection["IsActive"].Contains("true");
evnt.StartDate = startdate;
evnt.TrackId = trackId;
evnt.WebContent = collection["WebContent"];
if (!evnt.IsValid)
{
foreach (var error in evnt.GetRuleViolations())
{
ModelState.AddModelError(error.PropertyName, …Run Code Online (Sandbox Code Playgroud) 是的,我知道这似乎是一个愚蠢的问题,它只是一次性的黑客,我需要完成一个有点平凡的任务,所以我可以继续前进更有趣的事情.
编辑:也许更多的信息会有所帮助:我正在尝试从桌面删除一些快捷方式,我需要用户立即看到它被删除(所以他们不必按F5).
我有一个输入表单,可以让我从多个选项中进行选择,并在用户更改选择时执行某些操作.例如,
<select onChange="javascript:doSomething();">
<option>A</option>
<option>B</option>
<option>C</option>
</select>
Run Code Online (Sandbox Code Playgroud)
现在,doSomething()只有在选择更改时才会触发.
我想doSomething()在用户选择任何选项时触发,可能再次选择相同的选项.
我尝试过使用"onClick"处理程序,但在用户启动选择过程之前会触发该处理程序.
那么,有没有办法在用户的每次选择上触发一个功能?
更新:
达里尔建议的答案似乎有效,但它并不一致.有时,只要用户点击下拉菜单,即使在用户完成选择过程之前,事件也会被触发!
我最近在C#中编写了一个快速而肮脏的概念验证代理服务器,作为使Java Web应用程序与驻留在另一台服务器上的传统VB6应用程序进行通信的努力的一部分.这简直太荒谬了:
代理服务器和客户端都使用相同的消息格式; 在代码中我使用一个ProxyMessage类来表示来自客户端的请求和服务器生成的响应:
public class ProxyMessage
{
int Length; // message length (not including the length bytes themselves)
string Body; // an XML string containing a request/response
// writes this message instance in the proper network format to stream
// (helper for response messages)
WriteToStream(Stream stream) { ... }
}
Run Code Online (Sandbox Code Playgroud)
消息尽可能简单:正文的长度+消息正文.
我有一个单独的ProxyClient类,表示与客户端的连接.它处理代理和单个客户端之间的所有交互.
我想知道的是它们是简化与异步套接字编程相关的样板代码的设计模式还是最佳实践?例如,您需要注意管理读取缓冲区,以免意外丢失字节,并且需要跟踪处理当前消息的距离.在我当前的代码中,我在我的回调函数中完成所有这些工作TcpClient.BeginRead,并在一些实例变量的帮助下管理缓冲区的状态和当前的消息处理状态.
我传递给我的回调函数的代码BeginRead如下,以及上下文的相关实例变量.代码似乎工作正常"原样",但我想知道它是否可以重构一点以使其更清晰(或者它可能已经是?).
private enum BufferStates
{
GetMessageLength,
GetMessageBody
}
// The read buffer. Initially 4 bytes because we are …Run Code Online (Sandbox Code Playgroud) 我正在System.IO.FileNotFoundException: The specified module could not be found运行调用C++/CLI程序集的C#代码,后者又调用纯C DLL.只要实例化一个调用纯C DLL函数的对象,就会发生这种情况.
BackingStore是纯C.CPPDemoViewModel是C++/CLI调用BackingStore它有一个对BackingStore的引用.
我尝试了最简单的案例 - 添加一个新的C#单元测试项目,它只是试图创建一个在CPPDemoViewModel中定义的对象.我从C#项目添加了一个引用到CPPDemoViewModel.
只需添加对CPPDemoViewModel的引用,C++/CLI测试项目就可以正常运行,因此它可以在语言之间进行.
我正在使用Visual Studio 2008 SP1和.Net 3.5 SP1.我正在构建Vista x64,但一直小心确保我的平台目标设置为x86.
这感觉就像一些愚蠢而且显而易见的我不知道但是浪费时间试图私下解决它会让我更加愚蠢所以我在这里让自己感到尴尬!
这是对一个移植大量遗留C代码的项目的测试,我将其保存在一个带有在C++/CLI中实现的ViewModel的DLL中.
编辑 检查目录后,我可以确认尚未复制BackingStore.dll.
我拥有使用典型的多项目解决方案创建的标准唯一项目文件夹.
WPFViewModelInCPP
BackingStore
CPPViewModel
CPPViewModelTestInCS
bin
Debug
Debug
令我惊讶的是,更高级别的Debug似乎是C和C++/CLI项目使用的公共文件夹.
WPFViewModelInCPP\Debug包含BackingStore.dll,CPPDemoViewModel.dll,CPPViewModelTest.dll及其关联的.ilk和.pdb文件
WPFViewModelInCPP\CPPViewModelTestInCS\bin\Debug包含CPPDemoViewModel和CPPViewModelTestInCS .dll和.pdb文件,但不包含BackingStore.但是,手动将BackingStore复制到该目录并不能解决该错误.
CPPDemoViewModel具有属性Copy Local set,我假设它负责在引用if时复制其DLL.我无法将C#项目的引用添加到纯C DLL中 - 它只是说无法添加对引用存储的引用.
我不确定我是否只有一两个问题.
我可以使用老式的复制构建步骤将BackingStore.dll复制到任何给定的C#项目目录中,尽管我希望新的.net模型不需要这样做.
DependencyWalker告诉我丢失的文件是GPSVC.dll,已建议表明安全设置问题.我怀疑这是一只红鲱鱼.
edit2 将BackingStore.dll的手动副本与可执行文件相邻,GUI现在可以正常工作.C#测试项目仍有问题,我怀疑是由于测试项目的运行时环境,但我现在可以没有它.
我有一个Windows shell扩展,它使用IShellIconOverlayIdentifier接口在文件和文件夹上显示叠加图标.我的扩展有点像TortoiseCVS或TortoiseSVN.
有时候我需要让Windows资源管理器重绘它的所有图标.为此,我像这样调用SHChangeNotify:
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL)
Run Code Online (Sandbox Code Playgroud)
这将刷新任何打开的资源管理器窗口的桌面和右侧窗格.它不会刷新任何资源管理器窗口左侧的文件夹树.
所以我试着像这样发送WM_SETTINGCHANGE:
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0)
Run Code Online (Sandbox Code Playgroud)
在Vista上,这会刷新文件夹树,但不会刷新右侧窗格.
的组合SHChangeNotify()之后WM_SETTINGCHANGE,似乎在Vista上工作得非常好.但如果显示,我仍然无法刷新XP上的文件夹树.
有没有人有任何想法如何更好地做到这一点?
XP有更好的解决方案吗?
发送SHCNE_ASSOCCHANGED有点像吟唱探险者头.它导致整个桌面刷新非常猛烈,并且任何打开的资源管理器窗口都会松开滚动位置.有什么东西不那么暴力吗?
我觉得虽然我喜欢J2ME和Java,但是他们有两个用于Java的API是虚伪的.Java的设计考虑了"一个代码,多个平台",现在它更像是"每个操作系统的一个API,以及一个比上网本更小的API." 我看到很多J2ME模拟器,这些被移植到像PSP这样的东西,以及其他自制软件的控制台,我想知道为什么没有人用普通的Java做这个.
我喜欢在我的电脑上编写游戏,而不是在PSP或Dreamcast上启动一个简单的模拟器并玩同一个游戏,但我不能.J2ME甚至不能在PC上运行,你需要一个模拟器,这会大大减少你的市场.而且大多数模拟器都很笨重,并不好.
随着IPhone这样的超级手机的出现,人们想要的不仅仅是小型的J2ME游戏,所以如果Java无法将标准的JRE移植到它上面,他们可能会发现自己错过了微软对上网本热潮的看法.
只是觉得Sun需要更加努力地使标准JRE更小,更便携,或者在PC上轻松实现J2ME.
关于iPhone开发,你现在如何使用Cocoa与纯Objective-C对象.例如,以下是Objective-C:
但这些是可可:
并且要清楚,是吗
Cocoa Touch == iPhone开发
Cocoa == Mac OS X开发
我有一个被调用的字符串word和一个调用的函数infinitive,它
word.infinitive会在某些情况下返回另一个字符串而空字符串,否则
我试图为下面的代码片段找到一个优雅的ruby一行表达式
if word.infinitive == ""
return word
else return word.infinitive
Run Code Online (Sandbox Code Playgroud)
如果不定式返回nil而不是"",我本可以做类似的事情
(word.infinitive or word)
Run Code Online (Sandbox Code Playgroud)
但由于它没有,我不能利用短路或者
理想情况下我想要
1)单个表达式,我可以很容易地嵌入其他代码
2)函数不定式只被调用一次
3)不添加任何自定义宝石或插件到我的代码中
c# ×3
.net ×1
api ×1
asp.net-mvc ×1
boolean ×1
c#-2.0 ×1
c++-cli ×1
cocoa ×1
cocoa-touch ×1
css ×1
dom-events ×1
explorer ×1
html ×1
html-select ×1
iphone ×1
java ×1
java-me ×1
javascript ×1
objective-c ×1
ruby ×1
sockets ×1
string ×1
sun ×1
unmanaged ×1
winapi ×1
windows ×1