小编Jam*_*rgy的帖子

如何强制BundleCollection刷新MVC4中的缓存脚本包

...或者我是如何学会停止担心的,只是针对来自Microsoft的完全未记录的API编写代码.是否有官方System.Web.Optimization发布的实际文档?'cuz我肯定找不到任何,没有XML文档,所有的博客文章都引用了与实际上不同的RC API.安美居..

我正在编写一些代码来自动解析javascript依赖项,并从这些依赖项中动态创建bundle.一切都很好,除非您编辑脚本或以其他方式进行更改,这些更改会影响捆绑而不重新启动应用程序,否则不会反映更改.所以我添加了一个禁用缓存依赖项的选项,以便在开发中使用.

但是,即使捆绑集合已更改,显然也会BundleTables缓存URL .例如,在我自己的代码中,当我想重新创建一个包时,我做了类似这样的事情:

// remove an existing bundle
BundleTable.Bundles.Remove(BundleTable.Bundles.GetBundleFor(bundleAlias));

// recreate it.
var bundle = new ScriptBundle(bundleAlias);

// dependencies is a collection of objects representing scripts, 
// this creates a new bundle from that list. 

foreach (var item in dependencies)
{
    bundle.Include(item.Path);
}

// add the new bundle to the collection

BundleTable.Bundles.Add(bundle);

// bundleAlias is the same alias used previously to create the bundle,
// like "~/mybundle1" 

var bundleUrl …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc-4 bundling-and-minification asp.net-optimization

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

jQuery val()和复选框

是否有一些理由对于val()复选框控件无用,而对于在每个其他输入控件上一致地获取输入数据是有用的?

例如,对于复选框,无论复选框状态如何,at似乎始终返回"on".对于实际上没有"value"属性的其他输入控件,例如select和textarea,它的行为与您期望的一样.看到:

http://jsfiddle.net/jamietre/sdF2h/4/

我想不出一个很好的理由,为什么它不会回来truefalse.如果失败了,至少只有在选中时才会返回"on",而在没有时则返回空字符串.如果失败了,至少总是返回一个空字符串,因为复选框没有value属性!

显然我知道如何使用价值attr,但这是情况.我正在开发一个简单的(迄今为止无论如何)C#jQuery实现来在服务器上进行HTML解析,我正在努力完全忠实于jQuery的实现,因此它在客户端或服务器上针对相同的DOM表现一致.但这似乎很愚蠢,我很难让自己实际编码"值",无论如何都要为复选框返回"ON".但如果我不这样做,那就不一致了.所以我想了解,有这样做的原因吗?它是出于某种目的,还是仅仅是某种神器?有人val()会对复选框使用该方法,如果是这样,为什么?如果没有,为什么jQuery架构师决定使用这种方法使其无用?

jquery

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

将数据从JSON字符串覆盖到现有对象实例

我想反序列化一个JSON字符串,该字符串不一定包含每个成员的数据,例如:

public class MyStructure
{
   public string Field1;
   public string Field2;
}
Run Code Online (Sandbox Code Playgroud)

假设我有一个实例:

Field1: "data1"
Field2: "data2"
Run Code Online (Sandbox Code Playgroud)

我反序列化一个字符串:

{ "Field1": "newdata1" }

结果应该是

Field1: "newdata1"
Field2: "data2"
Run Code Online (Sandbox Code Playgroud)

框架JavascriptSerializerJSON.NET都在它们的反序列化方法中返回新对象,因此我可以想到直接执行此操作的唯一方法是将反序列化对象与使用反射的现有对象进行比较,这似乎是很多不必要的开销.理想情况下,某些软件会有一个方法,我传递一个现有的对象实例,只有那些存在于字符串中的成员才会得到更新.这里的要点是,我希望能够仅将已更改的数据传递给服务器,并更新现有对象.

是否可以使用这些工具中的任何一个,如果没有,有关如何解决问题的任何建议?

.net c# serialization json

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

最小化视图状态 - 在asp.net 4.0中由"EnableViewState"和"ViewStateMode"混淆

我正在尝试清理一个在任何地方都启用了ViewState的旧的ASP.NET WebForms站点.这是一个性能问题 - 巨大的观点导致明显的提交延迟.但是除了一些复杂的控件和表单数据之外,大多数表单似乎都不需要ViewState.即使是没有输入控件的表单,也会生成大型视图状态,因为我猜asp.net存储了关于每个服务器控件的各种元数据.但是可见性状态等都是在代码中控制的,所以我认为我可以消除很多.

添加EnableViewState="false"到不需要它的每个控件(在页面中并在代码中创建)是非常繁重的,所以我试图在页面/控件级别禁用它,并选择性地为需要它的东西启用它.(是的,我意识到这是有风险的,但实际上只有几个大的形式和几个模板,如果解决会产生很大的不同).

这是我没有得到的.

如果控件或页面具有EnableViewState="false"<%.. %>描述符,或者在其父页面中创建它的标记中,则一切都会中断,因为在代码中添加的任何ViewState数据都不起作用.所以我似乎能够在控件级别启用它,但是EnableViewState对于每个容器中的包装器控件设置为false,然后ViewStateMode=true在每个控件级别设置(以此为止).

我没有得到的是以下情况:

ViewStateMode = ViewStateMode.Enabled以及 EnableViewState = false包含其他控件的控件.

控制.内部控件是否仍可启用ViewStateMode?基本上,哪个设置在冲突时有最终结论?

对于每个容器,我希望能够在包装器控件中禁用所有内容,但仍然确保:

1)代码工作中的ViewState设置,和

2)默认情况下,对所有控件禁用ViewState,和

3)我可以选择性地启用ViewState以进行子控制.

这似乎令人困惑.如果我在母版页中设置了一个包装器控件EnableViewState="false",但随后设置了一个子控件ViewStateMode="Enabled",它就会中断.根据MS,ViewStateMode应该取代任何外部ViewState设置,但它似乎不起作用.

asp.net viewstate

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

NavigateUrl ="#"变成href ="SubFolder /#"?

这不完全是费马的最后一个定理,但它一直让我感到烦恼,就像大学里的无薪电话账单一样.有时我想创建一个HyperLink不会导致回发的内容,因此我希望目标网址为#.当标记恰好来自子文件夹中的UserControl时,

/
|- Home.aspx (uses UC.ascx)
|- Sub
   |- UC.ascx
Run Code Online (Sandbox Code Playgroud)

用相对路径重写URL,例如

<asp:HyperLink runat="server" NavigateUrl="#" >Click Me!</asp:HyperLink>
Run Code Online (Sandbox Code Playgroud)

<a href="SubFolder/#">Click Me!</a>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这是错误的.显然我可以通过不使用服务器控件来解决这个问题,但它似乎很愚蠢.这可以避免吗?

这里的重点是我将使用jQuery或代码隐藏添加click事件,我从不希望它导致回发,但我希望它是CSS原因的超链接.

asp.net

16
推荐指数
2
解决办法
8084
查看次数

将JSON递归反序列化为IDictionary <string,object>

我正在尝试将一些较旧的作品转换为使用Newtonsoft JSON.NET.使用该System.Web.Script.Serialization.JavaScriptSerializer.Deserialize方法的默认处理(例如,如果未指定目标类型)是Dictionary<string,object>为内部对象返回a .

这实际上是JSON非常有用的基本类型,因为它也恰好ExpandoObjects是动态类型使用的基础类型,也是最合理的动态类型内部实现.

如果我指定此类型,例如:

 var dict = JsonConvert.DeserializeObject<Dictionary<string,object>>(json);
Run Code Online (Sandbox Code Playgroud)

JSON.NET将正确地反序列化最外层的对象结构,但它返回JObject任何内部结构的类型.我真正需要的是将相同的外部结构用于任何内部对象类型结构.

有没有办法指定一个用于内部对象的类型,而不仅仅是返回的最外层类型?

c# json json.net

16
推荐指数
2
解决办法
8425
查看次数

Javascript原型和实例创建

我道歉,因为这个话题出现了很多,但我还没有能够在今天读到的任何内容中充分解释这个问题.

我正在尝试创建一个简单的集合类(并同时学习javascript原型),用于存储具有"name"属性的对象,并允许其成员通过索引或值访问.到目前为止,我有这个:

function Collection() {}
Collection.prototype.constructor = Collection;
Collection.prototype._innerList = [];
Collection.prototype._xref = {};
Collection.prototype.count = function () { return this._innerList.length; };
Collection.prototype.add = function (obj) {
    this._xref[obj.name] = this._innerList.push(obj) - 1;
}
Collection.prototype.get = function (id) {
    if (typeof id == "string") {
        return this._innerList[this._xref[id]];
    } else {
        return this._innerList[id];
    }
};
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/YrVFZ/

问题:

var foo = new Collection();
foo.add({name: "someitem", value:"hello world"});   // foo.count()== 1

var bar= new Collection();
bar.add({name: "someotheritem", value:"hello world"}); // bar.count()== 2
Run Code Online (Sandbox Code Playgroud)

嗯...

基本上, …

javascript prototype

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

从动态类型中抑制RuntimeBinderException消息

我最近开始使用私有NuGet服务器来管理我的组织的内部库.这意味着为了进入我们自己的库中的代码,我需要在调试选项中禁用"启用我的代码",因为我们不再直接引用这些项目.这是一个非常重要的MVC项目,ExpandoObjects除了使用动态类型之外ViewBag.RuntimeBinderExceptions每次使用动态类型我都会得到两个......这很多.这似乎是我读过的正常行为.它可能是正常的,但不是有用的.

我的第一个想法是在Debug-> Exceptions对话框中禁用此特定的exeption.那里没有例外.我无法想出任何方式能够直接引用直接引用的项目,而不会打开自己的这些例外.(以及我不想听到的各种其他低级别框架异常,但这是迄今为止最大的违规者).

处理这个问题的最佳方法是什么?

编辑:这是问题所在.如何通过禁用"启用我的代码"来阻止此操作?

在此输入图像描述

.net c# debugging visual-studio-2010

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

使用Browserify保留原始源图

假设我有一个源代码不是ECMA 5的模块(例如它的Coffescript或Typescript或其他),并以编译的形式与源映射一起分发.如何在Browserify包中包含此源地图?

例如,想象一个具有单个依赖项的项目:

index.js
    node_modules
         typescript_module
              (main.ts)
              dist
                  main.js
                  main.js.map
Run Code Online (Sandbox Code Playgroud)

browserify不使用"main.js.map".也就是说,browserify包源地图映射到"main.js"而不是推迟到描述"main.ts"的原始地图

对于大多数变换,有一种方法可以输入前一步生成的源地图,但是当源地图已经存在时,有没有办法在原始输入文件上保留它们?

browserify source-maps

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

从自定义处理程序调用默认的asp.net HttpHandler

我正在将ASP.NET路由添加到较旧的webforms应用程序中.我正在使用自定义HttpHandler来处理所有内容.在某些情况下,我想将特定路径映射回aspx文件,因此我需要将控制权传递回asp.net的默认HttpHandler.

我得到的最接近的是这个

public void ProcessRequest(HttpContext context) {
    // .. when we decide to pass it on

    var handler = new System.Web.UI.Page();
    handler.ProcessRequest(context);

    MemoryStream steam = new MemoryStream();
    StreamWriter writer = new StreamWriter(stream);
    HtmlTextWriter htmlWriter = new HtmlTextWriter(writer);
    handler.RenderControl(htmlWriter);


    // write headers, etc. & send stream to Response
}
Run Code Online (Sandbox Code Playgroud)

它没有做任何事情,流没有任何输出.MS的System.Web.UI.Page文档(作为IHttpHandler)说"不要调用ProcessRequest方法.它是供内部使用的".

从环顾四周看来你可以用MVC做到这一点,例如:MvcHttpHandler似乎没有实现IHttpHandler

还有一件事System.Web.UI.PageHandlerFactory似乎只会为aspx文件生成一个Page处理程序,但它是内部的,我不能直接使用它.

此页面:http://msdn.microsoft.com/en-us/library/bb398986.aspx引用"默认的asp.net处理程序",但不识别类或给出任何可能如何使用它的指示.

有关如何做到这一点的任何想法?可能吗?

asp.net routing httphandler httpcontext

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