我有一个类库,其中包含一些基类和从中派生的其他基类.在这个类库中,我正在利用多态来做我想做的事情.现在在一个消费应用程序中,我想根据子类的运行时类型更改某些代码的行为.假设如下:
public class Base { }
public class Child1 : Base { }
public class Child2 : Base { }
Run Code Online (Sandbox Code Playgroud)
现在在消费应用程序中,我想做一些如下操作(请注意,以下所有类都在使用应用程序中,并且无法在类库中引用):
public interface IMyInterface1 { }
public interface IMyInterface2 { }
public static class Extensions
{
public static void DoSomething(this Base myObj, Object dependency)
{
}
public static void DoSomething(this Child1 myObj, Object dependency)
{
IMyInterface1 myInterface = dependency as IMyInterface1;
if (myInterface != null)
{
//Do some Child1 specific logic here
}
}
public static void DoSomething(this Child2 myObj, …Run Code Online (Sandbox Code Playgroud) 我最近将Microsoft Unity添加到我的MVC3项目中,现在我收到此错误:
无法找到路径'/favicon.ico'的控制器,或者它没有实现IController.
我真的没有favicon.ico,所以我不知道它来自哪里.而最奇怪的是视图实际上正在呈现,然后这个错误被抛出......我不确定我的控制器工厂类是否有问题,因为我从一些教程得到了代码(我不是IoC - 这是我第一次这样做).这是代码:
public class UnityControllerFactory:DefaultControllerFactory {IUnityContainer container;
public UnityControllerFactory(IUnityContainer _container)
{
container = _container;
}
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
IController controller;
if(controllerType == null)
throw new HttpException(404, string.Format("The controller for path '{0}' could not be found or it does not implement IController.",
requestContext.HttpContext.Request.Path));
if(!typeof(IController).IsAssignableFrom(controllerType))
throw new ArgumentException(string.Format("Type requested is not a controller: {0}",
controllerType.Name),
"controllerType");
try
{
controller = container.Resolve(controllerType) as IController;
}
catch (Exception ex)
{
throw new InvalidOperationException(String.Format(
"Error resolving …Run Code Online (Sandbox Code Playgroud) 我有一个javascript字典对象,它有一个默认的预设键0.然后我需要通过索引遍历这个字典的元素,并使用键的值来设置它的值.以下是我的代码,使事情更容易理解:
var _map = {
'severity-normal': 0,
'severity-minimal': 0,
'severity-moderate': 0,
'severity-severe': 0,
'severity-highly-severe': 0
};
mapSeverities: function () {
for (var i = 0; i < _map.length; i++) {
//get the key value, ex: severity-normal, by index (which would by i)
var key = //retrieved key value
_map[key] = this.data(key);
}
}
Run Code Online (Sandbox Code Playgroud)
换句话说,假设我们正在处理的C#,我想获得KeyValuePair在一定的指数,然后访问它Key和Value属性.
有什么建议?
我最近发现了DotLess库,我对此感到非常兴奋,因为CSS一直让我讨厌.我觉得这个库使用起来非常方便.不幸的是,一旦我尝试了,我发现VS 2010不为具有.less扩展名的文件提供IntelliSense.这实际上让我感到沮丧,我决定不使用DotLess,直到VS 2010有一天提供IntelliSense.
Jon Galloway的视频MVC开发人员应该知道什么关于HTML和CSS谈论HTML/CSS以及包括DotLess在内的一些方便提示,他提到了Phil Haack的T4模板,它允许我使用.less.css扩展,然后它要生成正确的CSS文件的东西.
我去了菲尔的博客,找到了他谈论T4模板的帖子.没有与T4模板的直接链接,并且链接在他的博客文章中已经死了,这篇文章相对过时(2009年).
有没有人有这个问题的解决方案?我真的想使用DotLess库,但我不想丢失IntelliSense.
我的情况是用户可以拥有多个地址.因此,我的用户类上有一个ICollection.但我也希望用户能够选择默认地址.所以我做了以下事情:
public class User
{
public int Id { get; set; }
public int? DefaultAddressId { get; set; }
[ForeignKey("DefaultAddressId")]
public virtual Address DefaultAddress { get; set; }
public virtual ICollection<Address> Addresses { get; set; }
//properties were removed for purpose of this post
}
Run Code Online (Sandbox Code Playgroud)
我想public virtual Address DefaultAddress { get; set; }完全删除,保留DefaultAddressId并使用Fluent API映射它,因为当前的设置导致了很多麻烦(在这个和其他我有类似设置的类中).那么可以使用流畅的api来完成吗?
更新: 地址类当前没有对User类的任何引用,它是一个单向关系.但是,是的,一个地址只属于一个用户,它不是一个多对多的关系.这是地址类:
public class Address
{
public int Id { get; set; }
public string Name { get; set; }
public string Details { …Run Code Online (Sandbox Code Playgroud) entity-framework fluent-interface ef-code-first entity-framework-4.1
我理解为什么会这样,但我需要一个解决方法.我在StackOverflow上查看了一些其他问题,但没有一个是有用的.我不想在整个网站上禁用输入验证,因为这绝对是危险的.我只有一个(至少现在)我需要禁用输入验证的地方.
我用[ValidateInput(false)]属性修饰了Action方法,我用Html.Encode对字符串进行编码.但是,我仍然得到同样的错误.这是我的观点:
<div id="sharwe-categories">
<ul class="menu menu-vertical menu-accordion">
@foreach(var topLevel in Model)
{
var topLevelName = Html.Encode(topLevel.Name);
<li class="topLevel">
<h3>
@Html.ActionLink(topLevel.Name, "Index", "Item", new { category = topLevelName }, new {@class = "main"} )
<a href="#" class="drop-down"></a>
</h3>
<ul>
@foreach (var childCategory in topLevel.Children)
{
var childcategoryName = Html.Encode(childCategory.Name);
<li>@Html.ActionLink(childCategory.Name, "Index", "Item", new RouteValueDictionary { { "category", topLevelName }, { "subcategory", childcategoryName } }, null)</li>
}
</ul>
</li>
}
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
如您所见,没有用户输入.但是一些类别名称中有一些"危险"字符......任何解决方案?
我正在尝试使用该指令基于某个属性的值将该multiple属性添加到指令中.不幸的是,那不适合我.我已经设置了一个示例来展示正在发生的事情.ui-selectng-attr-
我有一个自定义JavaScript对象的数组,它有一个名为的属性order.我有一个这个对象的数组,我想得到具有最高"顺序"的项目.
由于我对jQuery相对较新,并且来自C#背景,这是我非常欣赏LINQ的实例之一:)
无论如何,长话短说,我已经检查了以下链接,但他们只返回值而不是数组元素本身的引用...所以有一点帮助改变它返回元素将不胜感激.
有问题的自定义对象(我有一个数组)如下:
var severity = function (key, value, order) {
this.key = key;
this.value = value;
this.order = order;
};
Run Code Online (Sandbox Code Playgroud) 我有一个案例,我需要从HTTPS页面执行AJAX请求到不安全的另一个(在不同的域上).我们已经实施了CORS策略,在我们的网站上使用HTTPS之前它工作正常.有没有办法让这项工作?
由于EF的更改跟踪和延迟加载功能,我在查询中遇到问题.问题是,在我得到查询结果之后,我使用AutoMapper将域对象映射到我的业务模型中,但由于已经处理了上下文,它不断抛出异常.
ObjectContext实例已被释放,不能再用于需要连接的操作.
当我在调试器中查看结果集合时,我看到它是一个列表,DynamicProxy而不是实际的实体.我试图停止更改跟踪,但这没有帮助.这是我的代码:
public List<ContentTypeColumn> GetContentTypeColumns(Int64 contentTypeId)
{
List<ContentTypeColumn> result = new List<ContentTypeColumn>();
using (SCGREDbContext context = new SCGREDbContext())
{
ContentType contentType = context.ContentTypes.Include("Parent").AsNoTracking().FirstOrDefault(x => x.Id.Equals(contentTypeId));
result.AddRange(contentType.ContentTypeColumns.ToList());
while (contentType.Parent != null)
{
result.AddRange(contentType.Parent.ContentTypeColumns.ToList());
contentType = contentType.Parent;
}
}
return result.ToList();
}
Run Code Online (Sandbox Code Playgroud)
注意:如果您需要查看此操作中涉及的域模型,可以参考此问题.
entity-framework lazy-loading change-tracking objectcontext entity-framework-5
javascript ×4
.net ×2
jquery ×2
ajax ×1
angularjs ×1
arrays ×1
asp.net-mvc ×1
c# ×1
cors ×1
dictionary ×1
dotless ×1
http ×1
https ×1
lazy-loading ×1
minmax ×1
polymorphism ×1
razor ×1
security ×1
t4 ×1
ui-select ×1
validation ×1