我正在为我的所有表单使用post-redirect-get模式,但现在需要添加AJAX功能来改善用户体验.我最初的想法是两者不混合.
在PRG场景中,我会发布我的帖子操作,如果存在验证错误,则会重定向回我的get操作,否则重定向到我的成功获取操作.
在AJAX场景中,我需要以任一方式返回局部视图.更典型的是,我会首先检查它是否是一个AJAX请求.如果是,则返回局部视图,否则返回视图.
有什么想法或建议吗?
我有一个依赖于UrlHelper的组件,我需要使用Castle Windsor注册.UrlHelper反过来又对RequestContext(和RouteCollection)有所了解.
现在我的控制器有一个类型为UrlHelper的Url属性,但据我所知,它无法真正访问它.
注册我的UrlHelper依赖项的最有效方法是什么(使用流畅的配置)?
如果我将以下行添加到ASP.NET MVC操作方法
throw new Exception("outer", new SecurityException("inner"));
Run Code Online (Sandbox Code Playgroud)
实际显示在死亡黄色屏幕上的错误是内部SecurityException,绝对没有提到外部异常.
抛出:SecurityException
说明:应用程序尝试执行安全策略不允许的操作.要授予此应用程序所需的权限,请与您的系统管理员联系或在配置文件中更改应用程序的信任级别.
异常详细信息:System.Security.SecurityException:inner
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
堆栈跟踪:
[SecurityException:inner]
这是预期的行为吗?
外部异常的类型似乎并不重要.即使它是另一个SecurityException,也不会显示该消息.默认的SecurityException错误消息是如此模糊,我想捕获它并添加一些更具体的信息.如果我不包含原始的SecurityException作为innerException,但是理想情况下我想这样做,这样可以正常工作.
一点都不确定这是可能的,但是在机会之外,这就是我需要的:
100px高div,顶部和底部边框.
div中的一个未知数量的项目,它们在父div的顶部和底部边框内水平显示.
重要的是,如果div中包含的更多项目可以水平放置,则div应继续下面的新行项目.第二行还应该在父div的顶部和底部边框之间水平显示项目.我不希望div只是增加高度并开始一个新行,因为这不允许顶部和底部边框出现在每行项目的上方和下方.

如果我使用.NET SDK从MVC应用程序添加Windows Azure队列项或blob存储引用,那么每个组件应该保留多长时间?
对于队列,我们有CloudStorageAccount,CloudQueueClient和CloudQueue.
对于blob存储,我们有CloudStorageAccount,CloudBlobClient和CloudBlobContainer.
我假设最好每个Web请求创建一个组件,但现在不创建每个项目的成本.我再次假设使用单例生命周期保持客户端之间的Web请求不是一个好的计划,但没有任何进展.
这显然是一个安全问题,可能不想改变它,但处理错误会很好.有任何想法吗?
我看到stackoverflow不能免疫:
他们似乎已将标记更改为web-config以修复问题但是当您搜索[web.config]时仍会收到非常讨厌的错误消息
我有一个大视图,需要一些条件逻辑来决定在视图中间呈现几个html块中的哪一个.我的模型上有一个属性,它可以有几个不同的值来决定要输出的html.
我通常会将条件逻辑放在一个html帮助器中,但鉴于每个输出都是一大块html,我不确定在ac#文件中转义它们会很棒.我也可以将逻辑放在动作中并呈现不同的视图,但鉴于大多数视图都是相同的,这似乎也不是很好.所以我在我的视图(或部分?)中留下了多个if语句,这看起来也很丑陋(显然是不可测试的).
这样做的最佳方式是什么?
(我正在使用MVC3以防万一我可以使用新的和时髦的东西!)
我有一个viewmodel,它包含一个TestThing类型的复杂属性,声明为:
public class TestThing
{
[Display(Name = "String3", Prompt = "String4")]
public string Test1 { get; set; }
[Display(Name = "String5", Prompt = "String6")]
public string Test2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个这种类型的EditorTemplate,我希望能够访问每个子属性的元数据.例如,如果模板用于字符串,我可以通过使用来访问提示文本@ViewData.ModelMetadata.Watermark,但因为它是复杂类型,所以我不能使用此方法.
还有其他选择吗?
asp.net-mvc editortemplates modelmetadata razor asp.net-mvc-3
给出以下界面:
public interface IEventHandler<in TEvent> where TEvent : IEvent
{
void Process(TEvent @event);
}
Run Code Online (Sandbox Code Playgroud)
我可以使用什么IEnumerable类型来存储IEventHandler<TEvent>TEvent不同的实现集合?
即给出以下3个实现:
public class BlahEvent1EventHandler : IEventHandler<Event1>
{
...
}
public class WhateverEvent1EventHandler : IEventHandler<Event1>
{
...
}
public class BlahEvent2EventHandler : IEventHandler<Event2>
{
...
}
Run Code Online (Sandbox Code Playgroud)
我可以比一组对象做得更好吗?
var handlers = new List<object>
{
new BlahEvent1EventHandler(),
new WhateverEvent1EventHandler(),
new BlahEvent2EventHandler(),
};
Run Code Online (Sandbox Code Playgroud)
顺便说一句,已经看到一些其他的答案提倡使用基类型或继承的非通用接口,但看不出在这种情况下如何增加大量的价值,除非我遗漏了一些东西.是的,它会让我以一种稍微更安全的方式将它们全部添加到集合中,使用对象,但不会让我迭代它们并调用强类型的Process方法而不像我需要对象那样进行转换.
public interface IEventHandler
{
}
public interface IEventHandler<in TEvent> : IEventHandler where TEvent : IEvent
{
void Process(TEvent @event);
}
Run Code Online (Sandbox Code Playgroud)
我仍然需要施放,如果我有IEnumerable<IEventHandler>或 …
我正在调查MVC3源并遇到以下(在OutputCacheAttribute.cs中),在生成用于输出缓存的键时调用它:
// The key is typically too long to be useful, so we use a cryptographic hash
// as the actual key (better randomization and key distribution, so small vary
// values will generate dramtically different keys).
using (SHA256 sha = SHA256.Create()) {
return Convert.ToBase64String(sha.ComputeHash(Encoding.UTF8.GetBytes(uniqueIdBuilder.ToString())));
}
Run Code Online (Sandbox Code Playgroud)
评论说需要使用哈希,因为"密钥通常太长而无法使用".任何人都可以阐明这一点,并建议在asp.net中缓存键的最大长度?
我有以下代码,我正在努力加快:
private bool IsValidProduct(string productName)
{
return (productName.IndexOf("something", StringComparison.InvariantCultureIgnoreCase) == -1 &&
productName.IndexOf("whatever", StringComparison.InvariantCultureIgnoreCase) == -1 &&
productName.IndexOf("blah", StringComparison.InvariantCultureIgnoreCase) == -1 &&
productName.IndexOf("keyword", StringComparison.InvariantCultureIgnoreCase) == -1 &&
productName.IndexOf("etc...", StringComparison.InvariantCultureIgnoreCase) == -1);
}
Run Code Online (Sandbox Code Playgroud)
我目前正在检查大约十几个单词.
这样做的最快方法是什么?
作为AutoMapper的新粉丝,我将如何使用它来执行以下操作:
给定以下类,我想从Group创建FlattenedGroup,其中项字符串列表映射到Item的title属性.
public class Group
{
public string Category { get; set; }
public IEnumerable<Item> Items { get; set; }
}
public class Item
{
public int ID { get; set; }
public string Title { get; set; }
}
public class FlattenedGroup
{
public string Category { get; set; }
public IEnumerable<string> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
谢谢
约瑟夫
asp.net-mvc ×5
asp.net ×2
c# ×2
ajax ×1
automapper ×1
azure ×1
azure-queues ×1
caching ×1
css ×1
generics ×1
html ×1
iis ×1
outputcache ×1
razor ×1
regex ×1
string ×1
url ×1