小编Tie*_* Do的帖子

为什么Request.Cookies在foreach循环中返回字符串而不是HttpCookie对象?

今天早上我偶然看到了以下片段代码,我感到非常惊讶,因为它工作得非常好.

请不要看它的逻辑,我只是​​好奇为什么HttpCookieCollection(在这种情况下是Request.Cookies)在foreach循环中返回一个字符串(cookie名称)而不是HttpCookie对象.这是一个一致性问题,因为我们通常通过索引/名称在此集合中获取HttpCookie对象吗?

谢谢,

foreach (string cookieKey in System.Web.HttpContext.Current.Request.Cookies)
{
    HttpCookie tmpCookie = System.Web.HttpContext.Current.Request.Cookies[cookieKey];
    if (tmpCookie != null && tmpCookie["RecentlyVisited"] != null)
    {
       cookie.Add(tmpCookie);
    }
}
Run Code Online (Sandbox Code Playgroud)

asp.net httpcookie

21
推荐指数
3
解决办法
1万
查看次数

为什么PhoneGap总是显示默认的闪屏图像?

我现在正在测试一个示例iOS应用程序,虽然我在Xcode(Project Target屏幕的Summary选项卡)中设置了所有新的启动图像,但PhoneGap 3.0仍然显示其默认的启动画面.为什么?即使splashscreen是一个插件,现在默认不包含在PhoneGap 3.0中.

iOS文档说的是关于启动图像而不是启动画面,它甚至强烈建议我们使用类似于启动图像的"第一屏幕",而不是像屏幕一样.这些是一样的吗?

splash-screen ios cordova

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

为什么AntiForgeryToken的隐藏字段与我的机器上的cookie不一样?

我刚刚通过修改默认的LogOn表单对一个简单的ASP.NET MVC 3示例进行了快速测试.根据这篇文章,隐藏字段__RequestVerificationToken和cookie __RequestVerificationToken_Lw__必须包含由生成的相同值Html.AntiForgeryToken().但是当我在Fiddle中获取它们时,它并不完全相同,顺便说一句,看看MVC 3源代码,方法GetAntiForgeryTokenAndSetCookie似乎没有使用salt值来生成cookie.MVC 3有什么变化吗?

忘了说我仍然可以使用普通或Ajax POST请求成功登录.

这是来自Fiddle的原始日志:

POST http://localhost:51713/Account/LogOn HTTP/1.1
Referer: http://localhost:51713/Account/LogOn
Content-Length: 256
Origin: http://localhost:51713
X-Requested-With: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded
Cookie: __RequestVerificationToken_Lw__=OIRtVqUvNt/LfDGeoVy3W1VhdKN7MwdbUZmRNScz4NqS4uV0I0vQH2MHg77SsVhcinK5SJi9mVcdBUWk2VMiPTk8EMUN2Zq0X4ucK8XQ3/zr6NoiIvVF73Bq8ahbFaY/IrNrWY7mmzvO9j/XVLNN2lNqgCd6I3UGZAw3/nlOmpA=

__RequestVerificationToken=zeDS%2F8MZE%2BLf%2FrRhevwN51J7bOE3GxlGNLQc8HogwFctF7glU1JboHePTTHa5YFe9%2FD2sY7w167q53gqvcwYZG1iZeecdnO4fdg6URdR4RUR%2BjIgk1apkXoxQ2xg48REfv4N5D4SHKU4MAf30Diy0MVyyF9N2Dl7uUGT6LbKHZU%3D&UserName=Tien&Password=tien&RememberMe=false
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc antiforgerytoken asp.net-mvc-3

9
推荐指数
1
解决办法
2613
查看次数

这个异步任务方法有什么问题?

这只是一个简单的异步任务,但我总是遇到奇怪的编译器错误.此代码来自ASP.NET 4项目中的Web API服务,使用VS2010创建.

甚至ContinueWith(非泛型)也会隐式返回Task,但此错误仍然存​​在.

码:

public class TestController : ApiController
{
       public Task<HttpResponseMessage> Test()
       {
            string url = "http://www.stackoverflow.com";
            var client = new HttpClient();

            return client.GetAsync(url).ContinueWith<HttpResponseMessage>((request) =>
            {
                // Error 361 'System.Threading.Tasks.Task' does not contain a definition
                // for 'Result' and no extension method 'Result' accepting a first argument
                // of type 'System.Threading.Tasks.Task' could be found
                // (are you missing a using directive or an assembly reference?)
                var response = request.Result;
                response.EnsureSuccessStatusCode();

                // Error 364 Cannot implicitly convert type 'System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage>' …
Run Code Online (Sandbox Code Playgroud)

c# task-parallel-library async-await asp.net-web-api

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

如何在iOS上修复Cordova 3.1的键盘问题?

我刚刚使用示例iOS应用程序测试了Cordova 3.1,并遇到了几个键盘问题.

应用设置:

  • Xcode 5
  • 状态栏已隐藏
  • 景观模式

config.xml中

问题:

  1. 所有版本:当关注输入字段时,整个视图会被推高,包括导航栏.

  2. iOS5/6:点击输入字段打开键盘,然后在键盘按下整个视图之前,屏幕顶部会短暂显示黑色间隙(是状态栏吗?)

  3. iOS7:没有类似#2问题的黑色差距,但还有其他问题:

    • 在移除(隐藏)之前我仍然看到配件吧.

    • 键盘是半透明的,然后我可以看到当前视图被推高的空间中的较暗背景.

如果我改变了,事情就更糟了:

  • 视图仍然被推高,当输入字段失去焦点时,即使在iOS 7上,屏幕顶部也会出现黑色间隙,如果KeyboardShrinksView = false,则不会发生这种情况.

  • 键盘在iOS 7上不再是半透明的.

下面是我的config.xml

<preference name="DisallowOverscroll" value="true" />
    <preference name="HideKeyboardFormAccessoryBar" value="true" />
    <preference name="KeyboardDisplayRequiresUserAction" value="false" />
    <preference name="KeyboardShrinksView" value="true" />
    <preference name="SuppressesIncrementalRendering" value="false" />
    <preference name="TopActivityIndicator" value="gray" />
    <preference name="EnableLocation" value="false" />
    <preference name="EnableViewportScale" value="false" />
    <preference name="AutoHideSplashScreen" value="false" />
    <preference name="ShowSplashScreenSpinner" value="false" />
    <preference name="MediaPlaybackRequiresUserAction" value="false" />
    <preference name="AllowInlineMediaPlayback" value="false" />
    <preference name="BackupWebStorage" value="none" />
    <preference name="Fullscreen" value="true" /> …
Run Code Online (Sandbox Code Playgroud)

keyboard ios cordova

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

如何在ASP.NET MVC 4中使用Request.Unvalidated?

根据此链接,现在我们可以使用Request.Unvalidated来访问表单字段的原始值,而不会触发请求验证(并查看可怕的错误消息A潜在危险的Request.Form ...).不幸的是我无法让它发挥作用.

Web.config文件

<httpRuntime targetFramework="4.5" requestValidationMode="4.5" />
Run Code Online (Sandbox Code Playgroud)

视图模型中的简单字段:

// [AllowHtml] - even I tried this, it still did not work :(
public string Description { get; set; }
Run Code Online (Sandbox Code Playgroud)

和控制器动作:

[HttpPost]
public ActionResult Edit([Bind(Prefix = "Edit")] EditModel model)
{
  string s = Request.Unvalidated.Form["Edit.Description"];
}
Run Code Online (Sandbox Code Playgroud)

我仍然看到错误"有潜在危险的Request.Form ......",为什么?试过谷歌,但没有ASP.NET MVC的例子.

工具箱:我正在使用ASP.NET MVC 4项目,目标是.NET 4.5和VS2012.

谢谢,

更新:使用带有Description属性的AllowHtml修复了我的问题,甚至不需要Request.Unvalidated.我在@ webdeveloper的回答中评论了下面的问题.

validation asp.net-mvc-4

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

如何说服开发人员内联和混合JavaScript/PHP代码不好?

这段代码片段来自我的队友,他的头衔是"Full Stack Developer".他大多写PHP.我在.php文件的末尾找到了这段代码,并要求他将其移动到一个单独的.js文件中,以获得可测试性,可维护性......只是一些最佳实践.

他否认,他实际上说这段代码"极其简单",重构只是让它变得更加复杂而没有任何好处.他谈到了KISS,关于表现......

在此输入图像描述

javascript php

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

使用遗留代码(使用reinterpret_cast)真的是一种很好的技术吗?

下面的代码来自于一个关于C++的面试问题后这里.我从来不知道这种技术:)(虽然它声称是一个很好的:)).我的问题是:我们需要在哪种情况下使用它?您是否经常在真实的生产/遗留代码中看到它?

题:

为任何给定的Something*对象实现一个获取topSecretValue的方法.该方法应该是跨平台兼容的,不依赖于sizeof(int,bool,string).

class Something {
    Something() {
        topSecretValue = 42;
    }
    bool somePublicBool;
    int somePublicInt;
    std::string somePublicString;
private:
    int topSecretValue;
};
Run Code Online (Sandbox Code Playgroud)

回答:

创建另一个类,它具有相同顺序的Something的所有成员,但具有返回值的其他公共方法.您的副本类似于以下内容:

class SomethingReplica {
public:
    int getTopSecretValue() { return topSecretValue; } // <-- new member function
    bool somePublicBool;
    int somePublicInt;
    std::string somePublicString;
private:
    int topSecretValue;
};

int main(int argc, const char * argv[]) {
    Something a;
    SomethingReplica* b = reinterpret_cast<SomethingReplica*>(&a);
    std::cout << b->getTopSecretValue();
}
Run Code Online (Sandbox Code Playgroud)

在最终产品中避免这样的代码很重要,但在处理遗留代码时它仍然是一种很好的技术,因为它可以用来从库类中提取中间计算值.(注意:如果事实证明外部库的对齐与您的代码不匹配,您可以使用#pragma pack解决此问题.)

c++

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