小编use*_*119的帖子

成功登录后,User.Identity.IsAuthenticated为false

成功登录后,我需要直接获取UserId Guid.以下代码不起作用:

if (Membership.ValidateUser(txtUsername.Value, txtPassword.Value))
{
    FormsAuthentication.SignOut();
    FormsAuthentication.SetAuthCookie(txtUsername.Value, true);

    if (HttpContext.Current.User.Identity.IsAuthenticated)
    {
        // doesn't run
        Guid puk = (Guid)Membership.GetUser().ProviderUserKey;            
    }
}
Run Code Online (Sandbox Code Playgroud)

以下代码确实有效:

if (Membership.ValidateUser(txtUsername.Value, txtPassword.Value))
{
    FormsAuthentication.SignOut();
    FormsAuthentication.SetAuthCookie(txtUsername.Value, true);

    MembershipUser user = Membership.GetUser(txtUsername.Value);

    if (user != null)
    {
        Guid puk = (Guid)user.ProviderUserKey;
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么会这样?除此之外还有其他事情要做SetAuthCookie吗?

c# asp.net asp.net-membership asp.net-4.5

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

实体框架 - 将表的列名称作为字符串数组

如果我首先使用EF 5和数据库生成数据库的.edmx模型,如何获取实体列的列表?

using (var db = new ProjectNameContext())
{
    // string[] colNames = db.Users.
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是colNames [0] =="Id",colNames [1] =="FirstName"等.

c# linq entity-framework entity-framework-5

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

window.location.href导致动画gif加载器在Firefox中冻结

我有一个链接,点击时将用户重定向到同一页面,除了附加参数:

<a id="lnkExportToPDF" href="javascript:void(0)">Export</a>

$('#lnkExportToPDF').click(function (e) {
    e.preventDefault();
    window.location.href = path + 'users/export/' + parm1 + '/' + parm2;
});
Run Code Online (Sandbox Code Playgroud)

在服务器端,我通过在请求路径中检查"导出"来处理它,如果找到它,我会将PDF文件写入响应:

System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.Clear();
response.AddHeader("Content-Type", "application/pdf");
response.AddHeader("Content-Disposition", String.Format("attachment; filename=" + filename + ".pdf; size={0}", buffer.Length.ToString()));
response.BinaryWrite(buffer);
response.End();
Run Code Online (Sandbox Code Playgroud)

一切正常,用户可以下载文件,但用户使用loader.gif页面上的任何其他操作都会显示未动画的加载程序.

是什么导致这种情况发生?在响应完成后有没有办法刷新/重新加载页面/ javascript?

编辑:我在这里找到了一个有用的JS工具:http://fgnass.github.io/spin.js/但除非绝对必要,否则我不想使用它

edit2:我也尝试使用通用处理程序(.ashx)来处理请求(即将href更改为指向处理程序),但是一旦页面重定向并且文件被写入,同样的事情就会发生

edit3:到目前为止,问题只发生在Firefox中.我尝试过使用Chrome和IE浏览器,gif在这些浏览器中保持动画效果.(每个的最新版本)

edit4:如果我使用带有src的iframe作为图像它可以解决问题,但它非常hacky并且它的样式在所有浏览器中看起来与居中/填充/边距不同.

编辑5:是的.如果我用萤火虫检查冷冻的GIF,它会神奇地解冻自己.

javascript asp.net firefox jquery http

15
推荐指数
1
解决办法
6208
查看次数

JavaScript clearTimeout不起作用

(我看过所有类似的问题/答案,但没有一个能解决我的问题.)

代码:

var timeoutHandle;

function showLoader(show) {
    if (show) {
        $('.loader').html('Loading...');
        $('.loader').show();

        timeoutHandle = setTimeout(function () {
            if ($('.loader').is(':visible')) {
                $('.loader').html('Still loading...');
            }
        }, 15000);
    }
    else {
        $('.loader').hide();
        clearTimeout(timeoutHandle);
    }
}
Run Code Online (Sandbox Code Playgroud)

AJAX函数只是showLoader(true)在调用服务器之前调用,然后showLoader(false)在结果之后调用.我有时会在15秒之前看到文本从"正在加载..."更改为"仍然加载...",因此就好像计时器线程仍在运行一样.上面的代码有什么问题吗?或者问题可能与其他代码有关..

编辑:我必须添加,showLoader(true)可以在服务器响应之前再次(再次)调用

javascript ajax jquery

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

使用较小的结果字符串进行简单的字符串加密/解密

我需要加密一个字符串,然后再次解密它.

我在这里实现了解决方案并且它运行良好,但结果字符串不合适,因为它需要简单且足够短以供用户使用.

我正在加密递增数据库ID(从1开始)并且不会超过500.理想情况下,我希望加密字符串的长度不超过6个字符.

任何想法赞赏..

编辑:这是一个冗长的形式,用户可以在以后使用此生成的字符串恢复

c# encryption

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

Page.RouteData.Values ["参数"]不起作用

我创建了一个新的Web窗体(ASP.NET 4.5)项目,我正在尝试使URL路由工作.

RouteConfig.cs 看起来像这样:

routes.MapPageRoute("surveyhome", "survey/home", "~/Survey.aspx");
routes.MapPageRoute("surveyquestions", "survey/questions/{q}", "~/Survey.aspx");
Run Code Online (Sandbox Code Playgroud)

我有一个看起来像这样的链接:

<a href="/survey/questions/1">1</a>
Run Code Online (Sandbox Code Playgroud)

它正确加载Survey.aspx页面,所以我知道它部分工作,但这段代码(在该页面的代码隐藏)不起作用:

if (Page.RouteData.Values["q"] != null)
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

它始终为空.为什么?

c# asp.net routing

8
推荐指数
1
解决办法
8013
查看次数

Panel的DefaultButton属性如何工作?

当您声明ButtonDefaultButton在ASP.NET中使用时会发生什么Panel?我知道ASP.NET会将Panel的内容呈现给a div并将一堆东西传递给ViewState.ViewState中是否有处理渲染Button的click事件的JavaScript?我认为ViewState就是那个 - 有关状态的信息.它是如何工作的?

javascript asp.net viewstate

8
推荐指数
1
解决办法
5043
查看次数

Parallel.ForEach 和 DbContext

我正在使用Parallel.ForEach它,它极大地提高了我的代码的性能,但我对DbContext多线程感到好奇。我知道它不是线程安全的,所以我在需要的地方使用锁。

循环遍历字典并计算统计信息:

Dictionary<string, List<decimal>> decimalStats = new Dictionary<string, List<decimal>>(); // this gets populated in another irrelevant loop

List<ComparativeStatistic> comparativeStats = db.ComparativeStatistics.ToList();
var statLock = new object();

Parallel.ForEach(decimalStats, entry =>
{
    List<decimal> vals = ((List<decimal>)entry.Value).ToList();

    if (vals.Count > 0)
    {
        string[] ids = entry.Key.Split('#');
        int questionId = int.Parse(ids[0]);
        int yearId = int.Parse(ids[1]);
        int adjacentYearId = int.Parse(ids[2]);

        var stat = comparativeStats.Where(l => l.QuestionID == questionId && l.YearID == yearId && l.AdjacentYearID == adjacentYearId).FirstOrDefault();

        if (stat == null)
        { …
Run Code Online (Sandbox Code Playgroud)

c# parallel-processing multithreading entity-framework parallel.foreach

7
推荐指数
1
解决办法
6642
查看次数

截取Button回发的最佳方法

我已经看到过像这样的其他解决方案非常简单,但如果javascript函数不仅仅是做confirm('sure?');什么呢?我永远不知道什么时候会回归布尔.

所以我决定实现我的所有 ASP.NET按钮:

<button id="btnDelete" name="btnDelete" class="btn">Delete</button>
<asp:Button ID="_btnDelete" runat="server" OnClick="_btnDelete_Click" style="display:none;" />

$('#btnDelete').click(function (e) {
    $.blockUI({ message: $('#divConfirmDeleteModal'), overlayCSS: { cursor: 'default' }, css: { cursor: 'default' }, baseZ: 5555 });
    return false;
});

$('#btnDeleteYes').click(function () {
    $('#<%=_btnDelete.ClientID%>').trigger('click');
});

$('#<%=_btnDelete.ClientID%>').click(function (e) { 
    // the delay happens here. if i put an alert here, it fires,
    // but then the page just loads until eventually the method gets called
    <%= ClientScript.GetPostBackEventReference(_btnDelete, string.Empty) %>; 
});
Run Code Online (Sandbox Code Playgroud)

..它一直运作良好,直到现在.我在IE中遇到问题(甚至是版本10) …

javascript asp.net page-lifecycle event-handling

6
推荐指数
1
解决办法
3397
查看次数

LINQ Sum与GroupBy

(不确定我是否需要GroupBy)

我的(简化)表格:

Products(ProductID,Name,Code)
Invoices(InvoiceID,Number,IsPaid)
Invoices_Products(InvoiceID,ProductID,Quantity,Price) - 多对多链接表

我需要显示按产品代码分组的付款发票的发票_产品列表(数量*价格).

我首先用来获取可以绑定到UI的集合的代码:

IEnumerable<Invoices_Products> invoices_products = db.Invoices_Products
.Where(ip => ip.Invoice.IsPaid).DistinctBy(m => m.Product.Code);
Run Code Online (Sandbox Code Playgroud)

然后我遍历这个以将其绑定到UI:

List<BindableInvoiceProduct> bindableInvoiceProducts = 
new List<BindableInvoiceProduct>();

foreach (var item in invoices_products)
{
    decimal salesValue = db.Invoices_Products.Where(ip => ip.Invoice.IsPaid 
    && ip.Product.Code == item.Product.Code).Sum(m => (m.Price * m.Quantity));

    bindableInvoiceProducts.Add(new BindableInvoiceProduct()
    {
        A = item.A,
        B = item.B,
        SalesValue = salesValue.ToString()
    });
}
Run Code Online (Sandbox Code Playgroud)

(DistinctBy方法来自morelinq)

为什么这不完全正确?

编辑:

一些数据:

Product - ProductID = 1,Name = 123,Code = A
Product - ProductID = …

c# linq

6
推荐指数
1
解决办法
937
查看次数