小编Bil*_*med的帖子

服务器无法附加标头在HTTP标头发送后,@ Html.AntiForgery发送异常

我正在开发一个asp.net mvc 5应用程序,我试图通过应用下面的代码重定向到ReturnUrl:

[HttpPost]
[AllowAnonymous]
public ActionResult Login(UserLogin model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        string EncryptedPassword = GetMD5(model.Password);
        if (DataAccess.DAL.UserIsValid(model.Username, EncryptedPassword))
        {
            FormsAuthentication.SetAuthCookie(model.Username, true);
            if (String.IsNullOrEmpty(returnUrl))
            {
                return RedirectToAction("Index", "Home");
            }
            else
            {
                Response.Redirect(returnUrl);
            }
        }
        else
        {
            ModelState.AddModelError("", "Invalid Username or Password");
        }
    }
    return View();
}
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常,但问题是,当我发布登录表单时,它给了我一个我从未遇到过的异常,并且我很难解决在Login.cshtml视图中生成的异常,在线:

@Html.AntiForgeryToken()
Run Code Online (Sandbox Code Playgroud)

它抛出的异常:

发送HTTP标头后,服务器无法附加标头.

我研究了很多,但我无法得出结论.当我删除@ Html.AntiForgeryToken()行时,我的应用程序工作正常,但我不想这样做,我希望我的应用程序保持跨站点请求保护.

任何人都可以帮助我,我如何摆脱这个例外?

asp.net-mvc-5 razorengine

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

所需的防伪表单字段"__RequestVerificationToken"不存在

这是我的另一个障碍,我希望我的网站保持跨站点攻击,我正在通过使用asp.net mvc 5通过Ajax请求开发一个Master/Detail表单,所以,为了创建一个条目,我'通过这种方式来完成Ajax请求的过程:

$.ajax({
        url: '/Sales/Create',
        data: JSON.stringify(salesmain),
        type: 'POST',
        contentType: 'application/json;',
        dataType: 'json',
        success: function (result) {

            if (result.Success == "1") {
                window.location.href = "/Sales/index";
            }
            else {
                alert(result.ex);
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

现在,它没有像ajax请求那样导航到Sales Controller中的Create操作,在此之前,它会抛出以下异常:

所需的防伪表单字段"__RequestVerificationToken"不存在.

我在谷歌搜索了很多但仍然不成功,这就是为什么我在这里,我读过一些博客,说使用jquery获取隐藏的__RequestVerificationToken字段并将其附加到表单值,包含JSON.stringify(salesmain)在一个函数中,这样:

$.ajax({
.
.
addRequestVerificationToken(JSON.stringify(salesmain))
Run Code Online (Sandbox Code Playgroud)

和功能:

function addRequestVerificationToken(data) {
data.__RequestVerificationToken = $('input[name=__RequestVerificationToken]').val();
return data;
};
Run Code Online (Sandbox Code Playgroud)

另外,我已经有了以下代码结构:

@using (Html.BeginForm())
{
  @Html.AntiForgeryToken()
  .
  .
Run Code Online (Sandbox Code Playgroud)

和Create操作之前的属性:

[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult Create([Bind(Include = "SalesId,ReferenceNo,SalesDate,SalesPerson")] SalesMain salesMain)
{
.
.
Run Code Online (Sandbox Code Playgroud)

而且我也在使用jQuery 1.5,可能是它的罪魁祸首,如果不是那么我应该怎么做才能解决这个问题?任何帮助将深表感谢,在此先感谢:)

ajax jquery antiforgerytoken asp.net-mvc-5

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

无法隐式转换'System.TimeSpan?' 到'System.TimeSpan'

以下代码工作正常:

DateTime d1 = DateTime.Now;
DateTime d2 = DateTime.Now.AddDays(-1);
int d3 = (int)(d1 - d2).TotalDays;
Run Code Online (Sandbox Code Playgroud)

但是,如果我定义DateTimeDateTime?:

DateTime? d1 = DateTime.Now;
DateTime? d2 = DateTime.Now.AddDays(-1);
int d3 = (int)(d1 - d2).TotalDays;
Run Code Online (Sandbox Code Playgroud)

带下划线的红色错误

无法隐式转换'System.TimeSpan?' 到'System.TimeSpan'

是否可以获得定义为可为空的两个日期时间之间的天数差异?

c# datetime timespan asp.net-mvc-5

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

bootstrap选项卡中的highcharts图表未正确显示

我有两个标签,标签1和标签2,当最初加载页面,在第一标签中的图形被加载在同一时间,这是件正确的col-md-6,现在,当我点击选项卡,在该选项卡图被折叠到第一个的近一半,我希望它也适合于col-md-6正确和罚款,有什么我做错了吗?

请看看这个jsfiddle

css jquery tabs highcharts twitter-bootstrap

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

日期格式dd/MM/yyyy无法在asp.net mvc 5中运行

我正在开发一个asp.net mvc 5应用程序,我正在尝试为dd/MM/yyyy格式设置验证,我一直在努力寻找合适的解决方案,但没有成功,我想要它接受:

24/01/2016

但它显示验证消息:

字段JoiningDate必须是日期.

这是我尝试过的:

[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime JoiningDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

此外,我希望它在用户端的任何地方以dd/MM/yyyy格式显示日期,但这是我的问题的第二部分,首先,它至少应该允许有效的日期输入.我坚持这个,任何帮助都会深深感激,我已经搜遍了所有,但我无法达到目的,在此先感谢:)

datetime date-formatting asp.net-mvc-5

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

如何使用jquery在单击时触发双击

是否可以触发用户单击的双击?请注意,我想要与使用鼠标双击相同的行为,是否可以使用 jQuery 获得相同的行为?到目前为止我尝试过的:

$("#container").dblclick(function() { 
    //code executed on jQuery double click rather than mouse double click
});
$("#container").click(function() { 
    $(this).dblclick(); 
});
Run Code Online (Sandbox Code Playgroud)

当我使用鼠标双击它时,它会正确,它会生成我想要的正确结果,但是当我尝试使用 jQuery 执行它时,它似乎不起作用,请帮助!提前致谢 :)

jquery events

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

如何在asp.net mvc 5中获取文件的内容类型

我知道文件的名称,保存在服务器上,我想获取contentType保存在服务器上的文件,我想要的是这样的:

string loc = Server.MapPath("~/Content/Images/document.*");
Run Code Online (Sandbox Code Playgroud)

但上面的代码不起作用,错误说:

指定了非法字符,即(*)

我的问题是,如何获取我知道并保存在服务器上的文件名的扩展名和内容类型?

c# file-extension content-type asp.net-mvc-5

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