我想在页面加载时启动Fancybox(例如Fancybox的模态或灯箱版本).我可以将它绑定到一个隐藏的锚标签并通过JavaScript激活该锚标签的click事件,但我宁愿直接启动Fancybox并避免额外的锚标记.
我一直在阅读Anti-XSS Security Runtime Engine,它看起来像是一个很好的Web表单解决方案,因为它通过反射检查控件并在适当的时候自动编码数据.但是,由于我没有真正使用ASP.NET MVC中的服务器端控件,因此它似乎不是ASP.NET MVC的可行解决方案.这是正确的还是我错过了什么?
在IIS7 URL Rewrite模块中,我可以在重定向规则中指定不适用于http-post请求吗?我使用Microsoft提供的模板来小写所有URL并附加一个尾部斜杠.但是我有一个AJAX帖子请求不符合这个规范,但他们打破我们他们被重写为301s.我并不担心对SEO的POST请求所以我更愿意,如果我可以在规则中指定忽略它.以下是我的规则:
<rule name="AddTrailingSlashRule" stopProcessing="true">
<match url="(.*[^/])$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" url="{R:1}/" />
</rule>
<rule name="LowerCaseRule" stopProcessing="true">
<match url="[A-Z]" ignoreCase="false" />
<action type="Redirect" url="{ToLower:{URL}}" />
</rule>
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,在使用该应用程序的过程中,用户可能会点击
virginia.usa.com
Run Code Online (Sandbox Code Playgroud)
至
newyork.usa.com
Run Code Online (Sandbox Code Playgroud)
由于每次用户从一个子域跨越到另一个子域时我不想创建新会话,在多个子域之间共享会话信息的好方法是什么?
我们最近升级到MVC 4,现在我们的链接中的标题无法正确显示.问题出在HTML.Raw无法转义和我们的标题属性之前,但现在确实如此.以下是我的示例代码:
<a title="@Html.Raw("Shoe Size 6½-8")">Test</a>
Run Code Online (Sandbox Code Playgroud)
产生以下标记:
<a title="Shoe Size 6&#189;-8">Test</a>
Run Code Online (Sandbox Code Playgroud)
到目前为止我找到的唯一解决方案是将整个锚放入一个字符串然后HTML.Raw该字符串.
为什么Html.Raw在ASP.NET MVC 4中转义锚标记中的&符号?.
这是一个非常难看的解决方案,我希望有更好的选择.
出于好奇,我想知道是否有合理的理由让Scripts文件夹不是ASP.NET MVC项目中Contents文件夹的子文件夹.Contents文件夹通常包含您的样式表和图像,由于某种原因,我也很自然地也在其中包含Scripts文件夹.
我关心的是使用我的jQuery选择器在样式表中定义的CSS类.原因是当样式表中定义了CSS类时,开发人员/设计人员有很多理由要更改类的名称或者如何在与jQuery选择器分离的html中使用它,而jQuery选择器也使用了类.没有什么可以告诉开发人员/设计人员在进行此更改时需要考虑JavaScript功能.
最好是避免将jQuery选择器与合法的CSS类联系起来,而是使用不依赖于任何样式的CSS类,并且使用像'j_'这样的前缀,这使得它的目的显然是专门用作jQuery选择器?这将使耦合不那么脆弱,代价是标记中的额外类名.这也会使验证引擎发现未定义的类不太有用,但前缀有望明显表明这些类是作为jQuery选择器的目的.
....
我知道CSS类应该根据它们的功能命名.但是,我并不认为以这种方式命名类可以解决问题.开发人员/设计人员仍会更改名称,即使他们的新名称仍然描述相同的功能,或者他们可能会修改使用它的位置.在这些情况下,这些更改不会影响JavaScript功能.
我正在使用Url.Action在具有XHTML严格的doctype的网站上生成带有两个查询参数的URL.
Url.Action("ActionName", "ControllerName", new { paramA="1" paramB="2" })
Run Code Online (Sandbox Code Playgroud)
产生:
/ControllerName/ActionName/?paramA=1¶mB=2
Run Code Online (Sandbox Code Playgroud)
但是我需要它来生成带有&符号转义的url:
/ControllerName/ActionName/?paramA=1&paramB=2
Run Code Online (Sandbox Code Playgroud)
Url.Action返回带有&符号未转义的URL的事实会破坏我的HTML验证.我目前的解决方案是只使用转义的&符号手动替换Url.Action返回的URL中的&符号.是否有内置或更好的解决方案来解决这个问题?
您可以使用Fluent验证库验证单个属性吗?如果是,如何验证?我认为2009年1月的这个讨论主题向我展示了如何通过以下语法来实现:
validator.Validate(new Person(), x => x.Surname);
Run Code Online (Sandbox Code Playgroud)
不幸的是,它似乎不适用于当前版本的库.另一件让我相信可能有可能验证单个属性的事情是Jeremy Skinners博客文章的以下引用:
"最后,我添加了能够执行一些FluentValidation的属性验证器而无需验证整个对象的能力.这意味着现在可以停止将默认的"值为必需"消息添加到ModelState中."
但是,我不知道这是否必然意味着它支持仅验证单个属性,或者您可以告诉验证库在第一个验证错误后停止验证.
我在我的ASP.Net MVC2应用程序中使用AppFabric作为会话状态提供程序,我希望它也使用本地缓存.我在config.ctions节点后面的web.config中有以下条目:
<dataCacheClient>
<localCache
isEnabled="true"
sync="TimeoutBased"
objectCount="100000"
ttlValue="300" />
<hosts>
<host name="127.0.0.1" cachePort="22233"/>
</hosts>
</dataCacheClient>
Run Code Online (Sandbox Code Playgroud)
我在web.config中也有以下条目作为system.web节点的子节点:
<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
<providers>
<add name="AppFabricCacheSessionStoreProvider" type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider" cacheName="Default" sharedId="DefaultId"/>
</providers>
</sessionState>
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果我在会话中添加一些内容然后在AppFabric powershell中运行以下两个命令,那么我添加到会话数据中的任何内容都不再存在,这让我相信它没有使用本地缓存:
Stop-CacheCluster
Start-CacheCluster
Run Code Online (Sandbox Code Playgroud)
我还尝试使用以下代码使用AppFabric缓存对象,在启动和停止CacheCluster之后,不再缓存一次缓存的对象:
var factory = new DataCacheFactory();
var cache = factory.GetCache("Default");
cache.Put("Key", "Test");
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用以下代码实例化AppFabric,我明确告诉它使用本地缓存而不是依赖web.config条目它可以工作:
var servers = new List<DataCacheServerEndpoint>(1) { new DataCacheServerEndpoint("127.0.0.1", 22233) };
var configuration = new DataCacheFactoryConfiguration {
Servers = servers,
LocalCacheProperties = new DataCacheLocalCacheProperties(100000, new TimeSpan(0, 30, 0), DataCacheLocalCacheInvalidationPolicy.TimeoutBased)
};
var factory = new DataCacheFactory(configuration);
var cache …
Run Code Online (Sandbox Code Playgroud) 我在ASP.NET MVC母版页中收到以下XHTML验证警告:
验证(XHTML 1.0 Transitional):元素'标题'出现的次数太少.
母版页的标题标记包含在head标记的ContentPlaceHolder中,如下面的代码所示.执行验证时不考虑ContentPlaceHolder中的title标记,我不想在head标记中添加另一个标记标记,因为那样我将留下两个标题标记.
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<asp:ContentPlaceHolder ID="head" runat="server">
<title></title>
</asp:ContentPlaceHolder>
</head>
Run Code Online (Sandbox Code Playgroud)
我找到的一个解决方法是在head标签中使用以下技术:
<% if (false) { %>
<title></title>
<% } %>
Run Code Online (Sandbox Code Playgroud)
这是解决此警告的最佳做法吗?我不是为了传递验证警告而添加多余代码的忠实粉丝,但如果没有更好的选择,我会忍受它.
是否可以使用与此类似的单个表达式在jQuery中选择当前上下文的兄弟的子节点?
$('~ div > span', this)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这对我不起作用,所以我不相信jQuery在表达式中支持这种类型的链接.然而,我能够使用以下方法:
$('> span', $('~ div', this))
$(this).siblings('div').children('span')
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来使用以下API调用来获取兄弟姐妹的孩子,或者解释为什么它不可能:
jQuery( expression, context )
Run Code Online (Sandbox Code Playgroud)