小编Hei*_*nzi的帖子

事件验证:允许__doPostBack用于一个控件和*any*参数

我正在使用

__doPostBack(clientIdOfSomeButton, someData);
Run Code Online (Sandbox Code Playgroud)

在JavaScript中创建PostBack.问题是someData事先不知道,事件验证开始,因为我不可能ClientScript.RegisterForEventValidation 每一个可能的价值someData.

到目前为止,我只能看到解决这个问题的两种可能性:

  1. 关闭页面的事件验证,出于安全原因不建议这样做.
  2. 不是通过事件验证传递数据,而是通过JavaScript将数据放入一些隐藏的文本字段中,然后调用__doPostBack.那很难看.

我错过了第三种选择吗?理想情况下,我喜欢类似的东西ClientScript.RegisterForEventValidationIgnoreArguments(myButton),但这样的东西不存在......

.net asp.net eventvalidation

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

枚举的标志和非标志变体

假设我需要在标志和非标志变体中都使用枚举.

  • 选项1:我可以复制一切:

    enum Color { Red, Blue, Green }
    
    [Flags]
    enum Colors {
        None = 0,
        Red = 1,
        Blue = 2,
        Green = 4
    }
    
    // use cases
    Color currentColor;
    Colors supportedColors;
    
    Run Code Online (Sandbox Code Playgroud)
  • 选项2:我可以将Flags变体用于所有内容:

    Colors currentColor; // ugly, since neither "None" nor "Red | Blue" should be valid
    
    Run Code Online (Sandbox Code Playgroud)

我不喜欢其中任何一个:在选项1中Color.Red,并且Colors.Red完全不相关,这可能需要绑定代码.另外,我必须保持两个枚举同步.选项2的缺点是显而易见的.我真正喜欢的是类似的东西

enum Colors = Flag set of Color;
Run Code Online (Sandbox Code Playgroud)

这个要求有更优雅的解决方案吗?

c# enums coding-style

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

以编程方式从HTML元素中删除特定的类名称

在C#ASP.NET中我将一个类添加到<input>using:

myInput.Attributes.Add("class","myClass");
Run Code Online (Sandbox Code Playgroud)

在某些时候,我想删除添加的类(不是所有类).有没有相应的:

myInput.Attributes.Remove("class","myClass");
Run Code Online (Sandbox Code Playgroud)

.Remove()似乎只接受一个键(没有对值).谢谢!

.net c# asp.net

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

将检查的异常作为RuntimeException抛出可能会导致什么问题?

我有一段代码在JSON字符串中编码某种业务数据:

public String encodeDataAsJsonString(Data data) throws JSONException {
    JSONObject o = new JSONObject();
    o.put("SomeField1", data.getSomeProperty1());
    o.put("SomeField2", data.getSomeProperty2());
    ...
    return o;
}
Run Code Online (Sandbox Code Playgroud)

事情是:

  • JSONException是一个已检查的异常,但是
  • 我真的不知道如何在编译时处理它.如果真的发生了JSONException,它可能是代码中的一个错误,应该由已经存在的常规"全局未捕获异常处理程序" (例如这个)处理,并且已经执行了所有必要的日志记录和清理.

因此,我最终在调用方法中执行此操作:

...
try {
    encoded = encodeDataAsJsonString(data);
} catch (JSONException e) {
    throw new RuntimeException(e);
}
...
Run Code Online (Sandbox Code Playgroud)

这似乎是不幸中之大幸不是添加throws JSONException每一个方法调用堆栈.但是,它仍然感觉很脏,因此我的问题是:

如果我想要一些特定的检查异常去"常规未经检查的异常路由",是否将它重新抛出为RuntimeException正确使用的习惯用法?

java exception-handling

4
推荐指数
2
解决办法
663
查看次数

参数化SQLite查询的奇怪行为

(如果你能想到更好的东西,请随意改进问题标题.)

问题:考虑以下SQLite查询:

SELECT COUNT(*)
  FROM (SELECT 1 AS value UNION SELECT 2 AS value)
 WHERE value <= ?
Run Code Online (Sandbox Code Playgroud)

当我1用作参数时,我希望查询能够产生1,但它会产生2.为什么会这样?


其他信息:

这是重现问题的最小工作示例(Android):

Cursor c = db.rawQuery(
        "SELECT COUNT(*) " +
        "  FROM (SELECT 1 AS value UNION SELECT 2 AS value) " +
        " WHERE value <= ? ",
        new String[] {String.valueOf(1)});

c.moveToFirst();
Log.i("", "Result: " + String.valueOf(c.getInt(0)));
Run Code Online (Sandbox Code Playgroud)

可能与参数作为字符串传递这一事实有关,但是,唉,没有其他方法可以将参数传递给SQLite API,所以我想我在这里没做任何"错误"而且它是SQLite的工作来适当地转换价值.在使用查询的非参数化版本时,我也观察到以下情况(这可能与问题有关,也可能不相关):

SELECT COUNT(*)
  FROM (SELECT 1 AS value UNION SELECT …
Run Code Online (Sandbox Code Playgroud)

sql sqlite android parameterized-query

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

vbNullString,String.Empty和""之间有什么区别?

所有这些

  • txtUsername.Text <> vbNullString
  • txtUsername.Text <> String.Empty
  • txtUsername.Text <> ""

似乎返回相同的结果.那么vbNullString,String.Empty和之间的区别是""什么?

vb.net string-comparison

4
推荐指数
2
解决办法
6271
查看次数

将连接的VB.NET字符串文字转换为多行字符串

注意:这个问题不是关于VB.NET本身,而是关于Visual Studio 2015 Basic编辑器的特定功能.

我有一些看起来像这样的遗留代码:

Dim someText =
    " a " &
    " AND b " &
    " AND cd " &
    " AND efg " &
    " AND h "
Run Code Online (Sandbox Code Playgroud)

由于Roslyn 在VB中引入了多行字符串文字,我想将其转换为:

Dim someText =
    " a 
      AND b 
      AND cd 
      AND efg 
      AND h "
Run Code Online (Sandbox Code Playgroud)

(我知道这两者并不完全等价,因为第二个包含额外的换行符和空格.这很好.我们假设内容类似于SQL或HTML,其中额外的空格并不重要.)

现在我的方法如下:首先我阻止选择起始引号(第一个除外)并用空格替换它们:

Dim someText =
   " a " &
     AND b " &
     AND cd " &
     AND efg " &
     AND h "
Run Code Online (Sandbox Code Playgroud)

然后我点击进入a线路修复后引号,和会发生以下情况: …

vb.net pretty-print visual-studio-2015

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

为什么Select-String会添加空行?

这是一个最小的repro示例.

预期结果:

PS C:\> ("a", "b")
a
b
PS C:\> ("a", "b") | Select-String "b"
b
PS C:\>
Run Code Online (Sandbox Code Playgroud)

实际结果:

PS C:\> ("a", "b")
a
b
PS C:\> ("a", "b") | Select-String "b"

b


PS C:\>
Run Code Online (Sandbox Code Playgroud)

如您所见,第二个输出前面有一个空行,匹配行后面有两个空行.

为什么会这样?我能做些什么呢?

(注意:这是一个最小的例子.在我的实际代码中,我正在解析svn status未提交文件的输出,我得到了与虚假换行相同的问题.)

powershell

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

无异常地获取当前方法和类,并且不在C#中使用反射

我想在方法中注销一些INFO日志记录,我不想使用反射来获取类和方法名称.

对于错误日志记录,我可以从异常中获取堆栈但是如何在没有异常的情况下执行此操作以关闭StackTrace?

.net c#

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

如何在 Xamarin 的新“Android 设备管理器”中禁用快速启动?

我创建了一个新的虚拟 Android 设备,现在面临“访客 7 秒内未上线”问题。这似乎是一个众所周知的问题,解决方案似乎是关闭“快速启动”:

不幸的是,这些问答中提到的“AVD 管理器”已被弃用,虽然 Microsoft声称Xamarin 的 Android 设备管理器“在功能上等同于”旧的 AVD 管理器工具,但我找不到禁用快速启动的选项:

安卓设备管理器

在新的 Android 设备管理器中哪里可以找到此选项?

android android-emulator xamarin.android xamarin

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