在.NET中的HTTP请求中传递和处理数组的标准方法是什么?我有一个解决方案,但我不知道这是否是最好的方法.
这是我的解决方案:
<form action="myhandler.ashx" method="post">
<input type="checkbox" name="user" value="Aaron" />
<input type="checkbox" name="user" value="Bobby" />
<input type="checkbox" name="user" value="Jimmy" />
<input type="checkbox" name="user" value="Kelly" />
<input type="checkbox" name="user" value="Simon" />
<input type="checkbox" name="user" value="TJ" />
<input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
ASHX处理程序以逗号分隔的字符串接收"user"参数.您可以通过拆分字符串轻松获取值:
public void ProcessRequest(HttpContext context)
{
string[] users = context.Request.Form["user"].Split(',');
}
Run Code Online (Sandbox Code Playgroud)
所以,我已经找到了我的问题的答案:为同一个参数名称分配多个值,假设ASHX处理程序将其作为逗号分隔的字符串接收,并拆分字符串.我的问题是这是否通常在.NET中完成.
这是什么标准做法?是否有一种更简单的方法来获取多个值,而不是假设该值是以逗号分隔并在其上调用Split()?这是数组通常如何在.NET中传递,还是使用XML?
有没有人对这是否是最好的方法有任何见解?
我想发一个HTTP请求,然后按照草图在这里得到响应:
URLConnection c = new URL("http://foo.com").openConnection();
c.setDoOutput(true);
/* write an http request here using a new OutputStreamWriter(c.getOutputStream) */
BufferedReader reader = new BufferedReader(new InputStreamReader(c.getInputStream));
reader.readLine();
Run Code Online (Sandbox Code Playgroud)
但我的问题是,如果我发送的请求需要很长时间才能收到响应,那么上面的调用reader.readLine()会发生什么?此进程是否会在CPU上保持运行/可运行,还是会从CPU中取出并在有IO被读取时被通知唤醒并再次运行?
如果它停留在CPU上,可以做些什么让它下来并在以后得到通知?
如果您将RIAServices与Custom ValidatorAttributes一起使用,那么这不仅仅是一个警告.
这是Senario,我正在创建一个自定义DataAnnotation,它将根据是否设置了一系列其他属性来验证属性,例如; 如果Prop1为100,则Prop2,Prop3或Prop4不能为0,其中一个必须设置.我也在使用RIA Services,所以我创建了ValidatorAttribute我的.shared.cs文件.在为helper CannotBeZeroIf类编写了所有测试之后,我开始将属性添加到Model Class中.当然,事情开始变得非常错误.RIA Services在CodeGen期间开始抛出NullReferenceException.
CreateRiaClientFilesTask - > NullReferenceException
事实证明,我正在使用验证器的构造函数将值传递给类.通过切换到使用ObjectInitialization语法,一切都得到了修复.
在处理RIA服务和自定义数据注释验证器时,答案似乎是使用ObjectInitializer语法.
我有visual Studio 2008.
我注意到我使用Visual Studio制作WPF应用程序.这是否意味着它可以完成Expression Studio的工作?
我将安装Visual Studio 2010.这是否取消了Expression Studio的必要性?
在OCaml 3.11中,我想使用include指令"扩展"现有模块,如下所示:
module MyString = struct
include String
let trim s = ...
end
Run Code Online (Sandbox Code Playgroud)
没问题.但现在我想明确地公开这个模块的类型(即在.mli文件中).我想要这样的东西:
module MyString : sig
include String
val trim : string -> string
end
Run Code Online (Sandbox Code Playgroud)
但是include语法不正确,因为String指的是模块,而不是模块类型(编译器确实是barf).我如何在这里引用String的模块类型(没有在sig表达式中明确地写出来)?
谢谢!
在程序(Java)中,我需要检查并行端口中的特定引脚.每当该引脚从逻辑0变为1(正边沿时钟)时,我必须读取端口上的数据并保存它.这种情况大约每10毫秒发生一次,但可能会有所不同.
为了做到这一点,我用一个不断检查端口的while循环创建了一个单独的线程,但这使得处理器变得疯狂,我知道这是因为while循环.我的问题是,如何在不使用处理器密集的while循环的情况下不断扫描端口?该程序并不准确知道何时发生引脚更改,只是它发生在每10ms左右.
我正在开发一个可以改变边框或矩形UIImage的应用程序.边框会有所不同,但看起来像UIImage是用剪刀剪掉的,或者是影响的东西.
做这个的最好方式是什么?
我的第一个想法是准备一堆透明的PNG,我正在寻找正确的边框效果,然后以某种方式使用它作为我的UIImage的面具.这是正确的道路吗?或者是否有更灵活的编程方式来做到这一点?
如何从命令对象中获取会话?
我试过了:
import org.springframework.security.context.SecurityContextHolder as SCH
class MyCommand {
def session = RCH.currentRequestAttributes().getSession()
}
Run Code Online (Sandbox Code Playgroud)
这引发了
java.lang.IllegalStateException:找不到线程绑定请求:您是指实际Web请求之外的请求属性,还是处理最初接收线程之外的请求?如果您实际在Web请求中操作并仍然收到此消息,则您的代码可能在DispatcherServlet/DispatcherPortlet之外运行:在这种情况下,请使用RequestContextListener或RequestContextFilter来公开当前请求.
每次在我的TFS服务器上运行构建时,我都在使用Visuial Studio的编码UI测试在WPF应用程序上运行自动UI测试.我遇到的问题是根据它刚刚构建的路径动态启动可执行文件,包括配置(x86,x64).
有没有办法在引用的项目中获取可执行文件的路径,以便我可以从我的测试项目中动态启动应用程序?
如果两个方法都声明为虚拟,那么被调用的Method1()的两个实例都不应该是派生类的Method1()吗?
我看到BASE然后每次调用DERIVED.我正在为面试做一些评论,我想确保我有这个直接.的xD
class BaseClass
{
public:
virtual void Method1() { cout << "Method 1 BASE" << endl; }
};
class DerClass: public BaseClass
{
public:
virtual void Method1() { cout << "Method 1 DERVIED" << endl; }
};
DerClass myClass;
((BaseClass)myClass).Method1();
myClass.Method1();
Run Code Online (Sandbox Code Playgroud)
方法1 BASE
方法1 DERVIED