小编Dav*_*ich的帖子

将db上下文放在静态类库中的优缺点

我们有一个静态类库来处理重复的多上下文任务.将EF db上下文创建为静态类的成员是不好的做法吗?

数据库上下文是出于某种原因而被处理掉的.经常处理它们会使连接池"流动"并且可能(这里我推测)确保表不会保持锁定状态.

所以我在静态类中使用db上下文时遇到麻烦,还是我在思考这个?

entity-framework entity-framework-4 entity-framework-4.1 entity-framework-5

8
推荐指数
2
解决办法
6642
查看次数

在后端ASP.NET MVC(MEF)上发布/绑定多个表单

我们正在尝试使用一个Ajax(jQuery)调用向ASP应用程序发送多个表单.

我们使用以下jQuery代码:

var formContainer = {
      Form1 : form1.serialize(),
      Form2 : form2.serialize()
     }
     $.ajax({
         type: "POST",
         url: '@Url.Action("CreateModel", "Controller")',

      data: formContainer,
         success: function (result) { }
     });
Run Code Online (Sandbox Code Playgroud)

在服务器上,我们在Request.Form属性中收到以下内容:

Key   : Value
Form1 : All serialized form elements for Form1
Form2 : All serialized form elements for Form2
Run Code Online (Sandbox Code Playgroud)

通常我们使用以下方法,因此ASP自动创建具有正确属性值的对象:

public ActionResult CreateModel(ClassForForm1 obj)
Run Code Online (Sandbox Code Playgroud)

但由于这两种形式是一起发送的,因此模型绑定器无法绑定和构建类.因此,对于此操作,我们希望模型构建器使用Request.Form ["Form1"]中的值.

我们不能使用自定义模型绑定器,因为我们使用extern库(DevExpress,他们在此之上编写了自己的实现).

我们使用MEF框架来添加功能(这些功能在视图中添加为表单).出于这个原因,我们不知道后端会有什么期望.因此编写包装器ViewModel是不可接受的.

处理其他表单数据的功能将在其他模块中进行处理.

欢迎任何解决方案!

提前致谢.

javascript ajax asp.net-mvc jquery model-binding

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

从JQuery发布JSON到ASP.NET MVC 4操作

我正在开发一个使用ASP.NET MVC 4的应用程序.在某些方面,我觉得我从头开始学习一切:).我被告知它值得.

我需要在控制器中将一些JSON发布到Action.我的行动如下:

[Authorize]
public class MyController : Controller
{
    [HttpPost]
    public ActionResult RemoveItem(string itemID)
    {
      // Do stuff...
      return Json(new { Status = 1, Message="Success" });
    }
}
Run Code Online (Sandbox Code Playgroud)

我的JQuery代码如下所示:

function removeItem(id) {
  var json = { "itemID": id };
  $.ajax({
    type: "POST",
    url: "/myController/removeItem",
    contentType: "application/json; charset=utf-8",
    data: json,
    dataType: "json",
    success: removeItemCompleted,
    error: removeItemFailed
  });
}

function removeItemCompleted(results) {
}

function removeItemFailed(request, status, error) {
}
Run Code Online (Sandbox Code Playgroud)

在Fiddler中,我注意到返回了500错误.响应中的TITLE字段说:"无效的JSON原语:itemID".

我究竟做错了什么?

谢谢!

c# asp.net-mvc jquery json asp.net-mvc-4

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

ASP.NET MVC将部分视图呈现为要使用JSON返回的字符串

所以我有一个完整的方法可以工作,我在整个网站上使用它:

public PartialViewResult GetBlogEntries(int itemsToTake = 5)
{
    ...
    return PartialView("_BlogPost", model);
}
Run Code Online (Sandbox Code Playgroud)

现在我想从JSON格式的javascript中获取此信息.

public JsonResult GetBlogPostJson()
{      
    var blogEntry = GetBlogEntries(1);
    var lastEntryId = GetLastBlogEntryId();
    return Json(new {Html = blogEntry, LastEntryId = lastEntryId}, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

想法就是这样:

$.ajax({
            url: '/Blog/GetBlogPostJson',
            dataType: 'json',
            success: function (data) {
                var lastEntryId = data.LastEntryId;
                var html = data.Html;
                ...
            }
        }); 
Run Code Online (Sandbox Code Playgroud)

问题是,这当然不会产生字符串,而是产生PartialViewResult.

问题是,如何将PartialViewResult解析为可以用JSON发回的html?

javascript c# asp.net-mvc jquery asp.net-mvc-4

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

使用jQuery插件时AngularJS验证,绑定等不起作用(例如autoNumeric)

我有一个角度形式,成功使用角度的内置验证.以下面的标记为例:

<form name="numberForm" novalidate>
    <input type="text" required />
    <button type="submit">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

浏览器加载时,输入字段会像这样呈现(删除了不必要的属性):

<input class="ng-pristine ng-invalid ng-invalid-required" />
Run Code Online (Sandbox Code Playgroud)

如果我在输入字段中输入值,则标记变为:

<input class="ng-dirty ng-valid ng-valid-required" />
Run Code Online (Sandbox Code Playgroud)

所有这一切都很有效.然后我实现了两个jQuery插件来实现窗体的一些屏蔽/输入格式: autoNumericjQuery.maskedinput.现在,我所做的一切都不会改变ng-pristine ng-invalid...输入上的原始类.它似乎也不允许模型的绑定成功.

有任何想法吗?

我尝试创建一个http://jsfiddle.net/ma44H/3/,但似乎无法弄清楚如何让它工作.

javascript jquery maskedinput angularjs

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

将整个模型类成员存储在会话中

在新创建的MVC4应用程序中,我想将所有USERProfile成员存储在一个会话中,以便我可以在用户登录后访问所有值.但是Session数组对象仅提出2个替代方案

Session[int]/Session[string]

我需要检索

Session['username']; Session['age']; etc

该课程中存在的任何内容.

c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

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

会话超时时调用Ajax

全部,如果在会话超时时进行ajax调用,我试图重定向到登录页面.这是我到目前为止所做的.

为所有操作定义操作筛选器.

public class AuthenticateFilterAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);
            var routeDataSet = filterContext.RouteData;
            if (LoginUser.LoginAdministrator == null)
            {
                //if the useinfo stored in session is timeout. 
                if (routeDataSet != null
                    && routeDataSet.Values["controller"] != null
                    && routeDataSet.Values["controller"].ToString().ToLower().Equals("login")
                    && routeDataSet.Values["action"] != null
                    && routeDataSet.Values["action"].ToString().ToLower().Equals("login"))
                {
                    //if it is login action itself.let it be. don't do anything.


                }
                else
                {
                    //redirect to login page.
                    filterContext.Result = new RedirectToRouteResult(
                        new RouteValueDictionary { { "controller", "Login" }, { "action", …
Run Code Online (Sandbox Code Playgroud)

ajax asp.net-mvc jquery asp.net-mvc-3 asp.net-mvc-4

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

Mac OS X相当于32feet的C#蓝牙

我曾在一个项目中使用32feet的 .NET库,我正在寻找移植到Mono Runtime的项目.

但是,由于32feet是用C/C++ for Windows编写的,然后包装在.NET中使用,我正在寻找一个等价的.

在过去的3天里,我一直在网上寻找替代方案,空手而归,所以现在是时候寻求帮助

c# macos mono bluetooth 32feet

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

使用与本地化更改冲突的自定义数据注释进行验证

我正在使用我的MVC 4应用程序中的数据注释来处理验证.这样做的一个要求是完全本地化所有错误消息和正则表达式.

为了做到这一点,我写了一个属性扩展,如下所示.

视图:

@Html.LabelFor(m => m.Postcode, new { @class = "input-label", @for = "valid-postcode" })
@Html.TextBoxFor(m => m.Postcode, new { type = "text", id = "valid-postcode", autocomplete = "off" })
@Html.ValidationMessageFor(m => m.Postcode)
Run Code Online (Sandbox Code Playgroud)

模型:

// Postcode
[Required(ErrorMessageResourceType = typeof(Resources.FormValidation), ErrorMessageResourceName = "requiredMsg")]
[Localised(typeof(Resources.FormValidation), "postcodeRegEx", "postcodeMsg")]
[Display(Name = "postcode", ResourceType = typeof(Resources.FormLabels))]
public string Postcode { get; set; }
Run Code Online (Sandbox Code Playgroud)

属性扩展:

public class LocalisedAttribute : RegularExpressionAttribute
    {
        public LocalisedAttribute(Type resource, string regularExpression, string errorMessage) 
            : base(Resources.FormValidation.ResourceManager.GetString(regularExpression))
        {
            ErrorMessageResourceType = …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc localization data-annotations asp.net-mvc-4 asp.net-mvc-5

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

如何解密Web API 2 JWT令牌?

我正在尝试使用OAuth bearer令牌Web API 2供应,但我不知道如何解密它们或获取数据.

我真正想做的是找到或写一个与Google Tool相同的工具https://developers.google.com/wallet/digital/docs/jwtdecoder,以获取我从Web API获得的令牌.Google工具允许您粘贴表示JWT令牌的文本字符串,然后将其拆分并取消对JSON内的JSON编码.

在Visual Studio 2013中,如果选择"新建ASP.NET项目",然后选择具有单个用户帐户的Web API模板,则会获得包含令牌端点的示例项目.如果您启动项目,则可以在内置的Web服务器上将请求"grant_type = password&username = joe&password = joe"发送到/ token,然后您将获得一个令牌:

{
"access_token":"x3vHm40WUXBiMZi_3EmdmCWLLuv4fsgjsg4S5Ya8kppDY_-2ejn7qF5Y_nbQ0bYVIKl6MNzL2GtXv-MAuwjippAAv5VDaxoKdxEVxeFrQ_eXsKNaQK7IvmVs1rIZ9eeRfRGK2AQ59wWQcyTtYO0dPJx9K7PGrSKz4ADAZ9SEZqQ4IesVhYbRCwToyxoyU5L9qdU8jXdHumkIrULRQhf68rIaBrEA_Be-V0rzWJ644fRLvv3z69XoHs3Az7PineILyNwbDck9uU2jkaXnwxoCTa4qlK8bR-lEI9-VXPNdbCvfgb5H9wfYsJcw2CMzNxNhV8v9YVZEt90evylwtTCEpXq4T3zRCQvrpbCvZrXqJ8uvlFeqCsvvhlIkSfPhBY8nm2ocWtBGPZm58zLe5FMi1jept0B54U38ZxkZlrGQKar47jkmnc6gpLrkpDBp7cWz",
"token_type":"bearer",
"expires_in":1209599,
"userName":"joe",
".issued":"Fri, 01 Aug 2014 16:16:02 GMT",
".expires":"Fri, 15 Aug 2014 16:16:02 GMT"
}
Run Code Online (Sandbox Code Playgroud)

我想知道的是access_token所处的格式以及包含的信息.

我发现的一个线索是:您可以通过在Startup.Auth.cs中设置OAuthAuthorizationServerOptions.AccessTokenFormat属性来选择Web API使用的令牌类型.OAuthAuthorizationServerOptions的文档说:

"用于保护访问令牌中包含的信息的数据格式.如果应用程序未提供,则默认数据保护提供程序依赖于主机服务器.ISO上的SystemWeb主机将使用ASP.NET机器密钥数据保护,以及HttpListener和其他自托管服务器将使用DPAPI数据保护.如果分配了不同的访问令牌提供程序或格式,则必须将兼容实例分配给资源服务器的OAuthBearerAuthenticationOptions.AccessTokenProvider或OAuthBearerAuthenticationOptions.AccessTokenFormat属性.

所以它可能使用MachineKey进行编码.没关系,我可以设置机器密钥,但如果我知道创建令牌的机器密钥,我该如何解密?

c# asp.net oauth asp.net-web-api visual-studio-2013

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