我正在研究MVC ASP .NET应用程序.我对两者都比较新.
在控制器中,我试图获取当前登录用户,为此似乎有两种方法:
System.Web.HttpContext.Current.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)
要么
HttpContext.User.Identity.Name
Run Code Online (Sandbox Code Playgroud)
这些有什么区别?据我所知,在MVC框架中,控制器将当前的HttpContext存储为属性,因此这些方法是相同的.那是对的吗?
我不能为我的生活添加java源代码到eclipse所以我可以看到该语言的内部工作原理.甚至不像String Class那么简单.
当我运行java -version时,这就是我所拥有的:
java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)
我正在从以下网址下载java源:http: //download.java.net/jdk6/source/
当我附上它时的日食它说:
The JAR file "C:\Program Files\Java\jre6\jdk-6u14-fcs-src-b08-jrl-21_may_2009.jar"
has no source attachment.
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
如果我在C++中定义一个内部类,它是否自动成为包含它的类的朋友?例如,这是合法的:
class Outer {
public:
class Inner {
public:
void mutateOuter(Outer& o);
};
private:
int value;
};
void Outer::Inner::mutateOuter(Outer& o) {
o.value ++; // Legal? Or not?
}
Run Code Online (Sandbox Code Playgroud)
我问,因为在我试过的一些编译器(VS2003)上,这段代码不起作用,但我至少听说过它在某些编译器上有效.我无法在C++规范中找到关于此的相关部分,如果有人能够引用某些特定内容,那就是说它是合法的还是不合法的.
想知道在创建异常消息时我应该花多少精力来强制使用有用的调试信息,或者我应该只是信任用户提供正确的信息,或者将信息收集推迟到异常处理程序?
我看到很多人都在做他们的例外,例如:
throw new RuntimeException('MyObject is not an array')
Run Code Online (Sandbox Code Playgroud)
或者使用自定义异常扩展默认异常但不会做太多但只更改异常名称:
throw new WrongTypeException('MyObject is not an array')
Run Code Online (Sandbox Code Playgroud)
但这并没有提供太多的调试信息......并且不会使用错误消息强制执行任何类型的格式化.所以你可能会得到完全相同的错误产生两个不同的错误消息...例如"数据库连接失败"vs"无法连接到数据库"
当然,如果它冒泡到顶部,它将打印堆栈跟踪,这是有用的,但它并不总是告诉我我需要知道的一切,通常我最终不得不开始拍摄var_dump()语句来发现出了什么问题,哪里......虽然这可能会被一个体面的异常处理程序所抵消.
我开始考虑类似下面的代码,我需要异常的thrower来提供必要的args来产生正确的错误消息.我想这可能就是这样的方式:
但我发现缺点是它们更难使用(需要你查找异常定义),因此可能会阻止其他程序员使用提供的异常......
我想对这个想法和一致,灵活的异常消息框架的最佳实践发表评论.
/**
* @package MyExceptions
* MyWrongTypeException occurs when an object or
* datastructure is of the incorrect datatype.
* Program defensively!
* @param $objectName string name of object, eg "\$myObject"
* @param $object object object of the wrong type
* @param $expect string expected type of object eg 'integer'
* @param $message any …Run Code Online (Sandbox Code Playgroud) 我在java中构造一个字节数组,我不知道数组会有多长.
我想要一些像Java的StringBuffer这样的工具你可以调用.append(字节b)或.append(byte [] buf)并让它缓冲我的所有字节并在完成后返回给我一个字节数组.是否有一个类用于StringBuffer为字符串做什么?它看起来不像我正在寻找的ByteBuffer类.
谁有一个很好的解决方案?
我正在做一些架构清理,涉及将一堆类移动到不同的项目和/或命名空间.目前我正在手动移动文件,构建,然后根据需要手动添加使用Foo语句来解决编译错误.有人知道这样做的更聪明的方法吗?(我们是CodeRush和Refactor!商店,但我很想知道Resharper是否支持这个)
给定信用卡号并且没有其他信息,PHP中确定它是否是有效数字的最佳方法是什么?
现在我需要能够使用American Express,Discover,MasterCard和Visa的东西,但如果它也可以与其他类型一起使用可能会有所帮助.
在给定的命名空间下,我有一组实现接口的类.我们称之为ISomething.我有另一个类(让我们称它CClass),它知道ISomething但不知道实现该接口的类.
我希望CClass找到所有的实现ISomething,实例化它的实例并执行该方法.
有没有人知道如何用C#3.5做到这一点?
想象一下,我有一个这样的枚举(仅作为一个例子):
public enum Direction{
Horizontal = 0,
Vertical = 1,
Diagonal = 2
}
Run Code Online (Sandbox Code Playgroud)
我如何编写一个例程来将这些值放入System.Web.Mvc.SelectList中,因为枚举的内容将来会发生变化?我想将每个枚举名称作为选项文本,并将其值作为值文本,如下所示:
<select>
<option value="0">Horizontal</option>
<option value="1">Vertical</option>
<option value="2">Diagonal</option>
</select>
Run Code Online (Sandbox Code Playgroud)
这是迄今为止我能想到的最好的:
public static SelectList GetDirectionSelectList()
{
Array values = Enum.GetValues(typeof(Direction));
List<ListItem> items = new List<ListItem>(values.Length);
foreach (var i in values)
{
items.Add(new ListItem
{
Text = Enum.GetName(typeof(Direction), i),
Value = i.ToString()
});
}
return new SelectList(items);
}
Run Code Online (Sandbox Code Playgroud)
但是,这总是将选项文本呈现为"System.Web.Mvc.ListItem".通过这个调试也告诉我,Enum.GetValues()正在返回'Horizontal,Vertical'等而不是0,1,正如我所期望的那样,这让我想知道Enum.GetName()和Enum之间有什么区别.的GetValue().
我在C#中使用WinForm应用程序,在文本框中键入内容后我想按Enter键但文本框仍然有焦点(闪烁光标仍在文本框中),我该如何实现?
c# ×3
asp.net-mvc ×2
java ×2
php ×2
buffer ×1
byte ×1
c++ ×1
credit-card ×1
e-commerce ×1
eclipse ×1
enums ×1
exception ×1
friend ×1
nested-class ×1
numbers ×1
refactoring ×1
reflection ×1
validation ×1
winforms ×1