小编esc*_*ist的帖子

AuthenticateRequest事件


问1.据我所知FormsAuthenticationModule,订阅了AuthenticateRequest事件,因此只有在触发此事件后才会FormsAuthenticationModule调用.但是下面的引言让我有些困惑:

  1. AuthenticateRequest事件表示配置的身份验证机制已对当前请求进行身份验证.

    • 以上引用是否表明在AuthenticateRequest引发事件时,请求(也称为用户)已经过身份验证?
  2. 订阅AuthenticateRequest事件可确保在处理附加模块或事件处理程序之前对请求进行身份验证.

    • 据我所知,如果我们订阅AuthenticatedRequest,那么我们的事件处理程序将在之前被调用FormsAuthenticationModule?这样Application_AuthenticateRequest()叫之前会FormsAuthenticationModule被称为?


问2.我正在学习的书建议Application_AuthenticateRequest()我们能够验证用户是否是特定角色的成员,如果没有,我们可以自动添加用户:

    protected void Application_AuthenticateRequest(Object sender, EventArgs e)
    {
            if (User.Identity.IsAuthenticated && Roles.Enabled)
            {

                //here we can subscribe user to a role via Roles.AddUserToRole()
            }       
    }
Run Code Online (Sandbox Code Playgroud)

从上面的代码判断,Application_AuthenticateRequest()调用后FormsAuthenticationModule调用,但在其他地方相同的书暗示Application_AuthenticateRequest()在之前调用FormsAuthenticationModule:

Application_AuthenticateRequest 在执行身份验证之前调用.这是创建自己的身份验证逻辑的起点.


我错过了什么?


感谢名单

c# asp.net authentication forms-authentication httpapplication

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

Javascript揭示模块模式,公共属性

我试图在javascript中绕过揭示模块模式.我对以下代码片段的两件事感到困惑.

        var Child = function () {
            var totalPoints = 100;
            addPoints = function (points) {
                totalPoints += points;
                return totalPoints;
            };
            getPoints = function () {
                return totalPoints;
            };
            return {
                points: totalPoints,
                addPoints: addPoints
            };
        };
        $(function () {
            var george = Child();
            console.log(george.points);
            console.log(george.addPoints(50));
            console.log(george.points);
        });
Run Code Online (Sandbox Code Playgroud)
  1. 这里写入控制台的三个值是100,150,100.这告诉我,当我用值调用"addPoints"时,totalPoints变量不会更新.如果我检查totalPoints的值的addPoints功能它已经被正确地递增.这是怎么回事?

  2. 如果我使用控制台检查window.addPoints或window.getPoints,我可以看到,因为我没有在函数声明前面使用"var"它们已被添加到全局范围.这不是错的吗?我正在看的大多数例子似乎都是这样做的.

任何指针都感激不尽.

javascript jquery design-patterns module-pattern

24
推荐指数
1
解决办法
8456
查看次数

"选择数据连接对话框"中的连接字符串(实体数据模型向导)

我删除了一个旧的edmx文件,我尝试通过添加>新项> Visual C#模板(数据) - ADO.NET实体数据模型添加一个新文件.

在此输入图像描述

在向导的"选择数据连接"窗口中,有一些预先存在的连接字符串.这些价值取自哪里?我搜索了我的解决方案的连接字符串,但没有任何.

如何删除这些预先存在的连接字符串,以便下次不显示它们?

visual-studio entity-framework-4

11
推荐指数
1
解决办法
3666
查看次数

JQuery UI Datepicker - 如何删除"完成"按钮

我正在使用Jquery datepicker.我希望按钮面板可见,但我不想要"完成"按钮.按照jQuery UI的页面在这里

显示用于选择今天日期的按钮和用于使用布尔showButtonPanel选项关闭日历的完成按钮.默认情况下,当显示条形时,每个按钮都会启用,但可以使用其他选项关闭.

关闭" 完成"按钮有哪些选项?我的代码:

<script>
 $(function() {
  $( "#JourneyDate" ).datepicker({
        showButtonPanel: true,
        showWeek: true,
        maxDate: "+0",
        dateFormat: 'd MM yy',
        changeMonth: true,
        changeYear: true
    });
});
</script>
Run Code Online (Sandbox Code Playgroud)

我尝试使用选择器ui-datepicker-close和调用来访问该按钮,remove()但这似乎不起作用.

jquery-ui jquery-ui-datepicker

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

验证文件上载 - Jquery和"Accept"属性

我正在使用表单上传文件.我只想上传PDF文件.这是我的代码:

一个允许用户选择文件的输入框:

@Html.FileBox(m => m.FileName, new { id = "FileName", accept = "application/pdf" })
Run Code Online (Sandbox Code Playgroud)

和显示错误消息的地方:

@Html.ValidationMessageFor(m=>m.FileName)
Run Code Online (Sandbox Code Playgroud)

为输入字段生成的代码是:

    <input id="FileName" type="file" name="FileName" data-val-required="The File Name field is required." data-val-length-max="512" data-val-length="The field File Name must be a string with a maximum length of 512." data-val="true" accept="application/pdf">
Run Code Online (Sandbox Code Playgroud)

现在,即使我选择了PDF文件,也​​会出错 Please enter a value with a valid extension.

我正在使用MVC 3和不引人注意的jquery来验证表单.

jquery jquery-validate asp.net-mvc-validation asp.net-mvc-3

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

ExceptionContext.ExceptionHandled更改为true.处理例外的地方在哪里?

我正在使用全局操作过滤器来处理和记录所有异常.

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new ElmahHandleErrorAttribute());
        filters.Add(new HandleErrorAttribute());
    }
Run Code Online (Sandbox Code Playgroud)

这是全局动作过滤器ElmahHandleErrorAttribute的定义方式 - 它会覆盖该OnException方法.

public class ElmahHandleErrorAttribute : System.Web.Mvc.HandleErrorAttribute
{
    public override void OnException(ExceptionContext context)
    {
       //Is the exception handled already? context.ExceptionHandled seems to be true here
        if (!context.IsChildAction && (context.HttpContext.IsCustomErrorEnabled))
        {
            //Do other stuff stuff
            //Log to Elmah               
        }
    }
   ...
 }
Run Code Online (Sandbox Code Playgroud)

我不明白为什么方法执行context.ExceptionHandled时值为true OnException.如何处理此异常?

-EDIT- 我有一customErrorsWeb.Config.我有一个ErrorController班级和行动叫做GeneralHttp404.

<customErrors mode ="On" defaultRedirect="Error/General">
      <error …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc exception-handling custom-error-pages asp.net-mvc-3

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

Model First方法中的EF Concurrency Handling with Timestamp属性

我试图在ASP.NET MVC应用程序中实现使用Entity Framework处理并发中给出的解决方案.

文章说:

将跟踪属性添加到部门实体

在Models\Department.cs中,添加一个跟踪属性:

[Timestamp] 
public Byte[] Timestamp { get; set; }
Run Code Online (Sandbox Code Playgroud)

Timestamp属性指定此列将包含在发送到数据库的Update和Delete命令的Where子句中.

由于我使用的是模型第一种方法,因此我遵循了使用Entity Framework创建时间戳列中概述的步骤1 - 5

  1. 将名为"Timestamp"的属性添加到EF模型中的实体
  2. 将类型设置为二进制
  3. 将nullable设置为false
  4. 将StoreGeneratedPattern设置为Computed
  5. 将ConcurrencyMode设置为Fixed

当我从数据库模型更新我的代码时,Models\Department.cs现在包含

    public virtual byte[] Timestamp
    {
        get;
        set;
    }
Run Code Online (Sandbox Code Playgroud)

然后我使用元数据类来指定Timestamp属性:

// Metadata for Department entity
public class DepartmentMetadata
{
    [Timestamp]
    public byte Timestamp { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Q1.Timestamp在行编辑的情况下,我测试了列的值是否发生了变化.事实并非如此.

编辑1问题是由于SQL Server列类型binary,它应该是类型的原因引起的timestamp.更改数据类型修复了Timestamp列未更新的问题.

Q2.我试图修改同一个实体(使用"在新标签页中打开")来查看是否OptimisticConcurrencyException抛出了一个实体.事实并非如此.我究竟做错了什么?请帮助我理解,谢谢.

我的<code> Timestamp </ code>属性的屏幕截图

.net optimistic-concurrency entity-framework-4

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

jQuery.parseJSON无法解析序列化的C#字典

我正在使用本教程来序列化C#字典.C#字典被序列化为字符串.该@Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ElementDivIDs))像一个魅力的作品.这是我得到的输出,:

  var jsonString = {"9":["ele9-tabs-attr9","ele9-tabs-attr48"],"10":["ele10-tabs-attr10"],"11":["ele11-tabs-attr11"],"12":["ele12-tabs-attr12","ele12-tabs-attr49"],"13":["ele13-tabs-attr13"],"14":["ele14-tabs-attr14"]}
Run Code Online (Sandbox Code Playgroud)

我想将其转换为Javascript关联数组.但是对jquery.parseJSON的调用返回NULL.

var dictionaryOfOtherDivs = jQuery.parseJSON( jsonString );

dictionaryOfOtherDivs 在此之后为空.

这是我的代码:

<script type="text/javascript">
$(document).ready(function () {
     var jsonString = @Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ElementDivIDs))
     console.log(jsonString); 
     var dictionaryOfOtherDivs  = jQuery.parseJSON( jsonString ); 
     for(var dictKey in dictionaryOfOtherDivs)
     { 
        console.log("key = " + dictKey + ", value = " + dictionaryOfOtherDivs[dictKey]); 
     }
     //Do some more things
});
</script>
Run Code Online (Sandbox Code Playgroud)

javascript jquery serialization json

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

对表进行反规范化或使用实体框架中的连接

我需要知道使用非规范化表与使用两个单独的表并使用连接访问数据的权衡.我正在使用Entity Framework 4.

在我的情况下,我有两个表OrderOrderCategoryDetails.我在想是否将这两个表合并为一个表更好?

  • 如果非规范化,则添加的列(OrderCategory并且OrderSubcategory将是稀疏的(可能是100%为空.将始终至少50%为空)
  • 另一方面,如果我保持原样,我担心频繁的连接操作被执行(即每当我查询特定的时候Order,我也需要信息OrderCategoryDetails.

目前,我已经规范化了表并使用了导航属性:

这是我的架构:

表:订单

  • ID (首要的关键)
  • 日期
  • ItemCount中
  • OrderCategoryInfo(FK - 加入OrderCategoryDetailson OrderCategoryDetails.ID)

表:OrderCategoryDe​​tails

  • ID (首要的关键)
  • OrderCategory
  • OrderSubCategory

表:OrderItem

  • OrderItem ID (首要的关键)
  • 订单ID(FK - 加入Order)

使用的数据库:SQL Server 2008 R2

c# sql-server database-design entity-framework database-normalization

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