Tag: asp.net mvc

我可以在Entity Framework SubQuery中使用扩展方法吗?

我正在尝试使用Entity Framework整合访问不同表的逻辑。 我创建了一个扩展方法,用于从我的注册实体中提取所有注册人: public static IEnumerable Attending(this IEnumerable registrations) { return registrations.Where(r => r.Status == RegistrationStatus.Paid || r.Status == RegistrationStatus.Assigned || r.Status == RegistrationStatus.Completed); } 这适用于这样的查询: var attendees = db.Registrations.Attending().ToList(); 但是在子查询中使用它时不起作用: ProductTotals = db.Products.Where(p => p.EventID == ev.Id).Select(p => new ProductSummaryViewModel { ProductID = p.ProductID, ProductName = p.Name, Registrations = p.Registrations.Attending().Count(), }).ToList(); 我收到以下错误: LINQ to […]

HandleErrorInfo使用MVC2 – 模型为空?

我有一个MVC 2 Web应用程序,即将发布。 到目前为止,我已关闭自定义错误,但我希望它们在我准备好生产时正常工作。 我已经使用以下内容设置了我的web.config: 404完美运行,NotFound是一个直接映射到View的动作,它只使用我自己的Site.Master文件显示一个非常标准的404页面。 对于除404之外的任何内容,我希望用户能够查看exception详细信息。 (这是一个内部应用程序,这样做没有安全风险)。 Error默认操作Index设置为返回我已定义的View()。 我无法弄清楚如何将exception信息传递给View? 看起来很有希望: How to use CustomErrors in ASP.NET MVC 2 但是当我使用View时: <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Bootstrap.Master" Inherits="System.Web.Mvc.ViewPage” %> 由于HandleErrorInfo为null,错误页面本身会抛出错误。 显然,自定义错误中的错误会导致MVC2出现大量问题,结果是黄色的死亡屏幕。 我想我要么错过了博客中的一些关键内容,要么就是没有解释如何让HandleErrorInfo成为除null以外的任何东西而不为我的每一个控制器/动作设置Error属性。 另外,我知道MVC3处理得更好,我知道Razor非常好。 它尚未用于此项目,也不会更改此项目以使用它。 所以请不要“使用MVC3”答案。

FileLoadException未被用户代码处理

我正在为我的MVC-4应用程序设置API,当我在Globals.asax.cs中取消注释这一行时: WebApiConfig.Register(GlobalConfiguration.Configuration); 当我重新启动项目时收到此exception: An exception of type ‘System.IO.FileLoadException’ occurred in mscorlib.dll but was not handled in user code Additional information: Could not load file or assembly ‘Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 我该怎么办? 更新1(截图) 据我所知,JSON.Net看起来已正确安装。 更新2 当在Globals.Asax中注释掉API路由时,JSON.Net实际上似乎有效。 […]

System.Core.dll中发生了未处理的“System.StackOverflowException”类型exception

在我的Asp.net MVC项目中 我有一个初始化统一容器的bootsrapper。 我不知道为什么,但我明白了 System.Core.dll中发生了未处理的“System.StackOverflowException”类型exception 我已经加倍检查,只在我的初始化程序中完成注册。 所有依赖项仅在ctors中注入。 有什么可能导致这个? protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); Initializer.Initialize(); BundleConfig.RegisterBundles(BundleTable.Bundles); } 它在BundleConfig.RegisterBundles(BundleTable.Bundles);之后失败BundleConfig.RegisterBundles(BundleTable.Bundles); public static class Initializer { private static bool isInitialize; private static readonly object LockObj = new object(); private static IUnityContainer defaultContainer = new UnityContainer(); static Initializer() { Initialize(); } public static void Initialize() { if […]

MVC中的P3P标题信息

我不确定我想把它放在我的Asp.net MVC网站上: HttpContext.Current.Response.AppendHeader(“P3P”, “CP=\\\”IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\\\””); 我把它放在: public static void RegisterRoutes(RouteCollection routes) { HttpContext.Current.Response.AppendHeader(“P3P”, “CP=\\\”IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\\\””); routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”); routes.MapRoute( “Default”, // Route name “{controller}/{action}/{id}”, // URL with parameters new { controller […]

使用自定义DataAnnotationsModelValidatorProvider进行服务器端validation

我已经设置了一个自定义提供程序,允许从数据存储而不是静态代码中设置validation属性。 在我的.NET MVC 4项目中使用客户端validation很好用,但我无法让服务器端validation工作。 CustomModelValidatorProvider .cs: public class CustomModelValidatorProvider:DataAnnotationsModelValidatorProvider { protected override IEnumerable GetValidators(ModelMetadata元数据,ControllerContext上下文,IEnumerable属性) { //在这里设置数据存储区的属性 return base.GetValidators(元数据,上下文,属性); } } 在我的Global.asax.cs中,我有: protected void Application_Start() { ModelValidatorProviders.Providers.Clear(); ModelValidatorProviders.Providers.Add(new CustomModelValidatorProvider()); } 在Web API方法中,我有: var validationResultList = new List(); bool valid = Validator.TryValidateObject(myModelObject,new ValidationContext(myModelObject,null,null),validationResultList,true); 在这里,有效总是如此。 即使Jquery客户端validation显示错误。 在服务器端,我的自定义提供程序不用于应用数据注释。 当我在GetValidators()中设置断点时,在创建View时调用它并正确显示客户端validation器,但是当模型绑定到控制器时不会再次调用它。 我错过了一步吗? 任何帮助是极大的赞赏! UPDATE 当对象发布到Controller时,自定义validation器可以正常工作,但在发布到ApiController时不会被触发。

ASP.NET MVC中的异步GET / POST和操作名称冲突

为ASP.NET MVC创建编辑页面的推荐方法是在名为Edit的控制器上有两个方法:一个GET操作和一个POST操作,两者共享相同的名称但重载不同。 如果编辑失败,则在POST操作上显示validation错误。 然后,即使用户关闭了POST,用户也可以共享或添加URL:URL返回时返回GET版本。 到现在为止还挺好。 但是在控制器上有ASP.NET异步模式 。 你有EditAsync和EditCompleted。 在两个不同的EditCompleted方法中,除了POST之外,你如何告诉GET? 如果重命名POST操作,则会丢失前面讨论的好行为。 有没有一种很好的方法让这两种模式一起工作?

JavaScriptSerializer 对虚拟属性无效?

我已经返回了一个Json(myObj)动作结果。 myObj是Badge类型 Badge具有的唯一两个可能导致序列化程序循环的对象是: public class Badge { public Badge() { } public Badge(String Name, String Description) { this.Name = Name; this.Description = Description; } [ScriptIgnore] public virtual BadgeType BadgeType { get; set; } [ScriptIgnore] public virtual ICollection Users { get; set; } public int ID { get; set; } public string Name { get; set; […]

跟踪asp.net mvc网站的用户活动/操作?

我想为我的Web应用程序的所有用户保留每个页面视图的日志。 经过足够的时间后,我将使用该日志生成报告。 我想让日志记录机制有点灵活,因为我不需要记录每个http请求。 一个示例用例是:公司注册我的Web应用程序,允许5名员工使用该应用程序。 我想报告说,上周有3名员工使用了该应用程序。 或者表明当年6月至8月期间有4名员工使用过它。 我正在使用带有sql server的asp.net mvc,如果这有所不同。 它就这么简单吗? 使用以下列创建一个sql表:UserId,ControllerName,ActionName,ActionParameters,CreatedOn。 然后创建一个ActionFilterAttribute,为每个调用的操作向db添加记录。 是否有任何我应该担心的陷阱(除了可能很大的表格大小)?

如何在用户注册期间添加声明

我正在使用带有身份2.1.0和VS2013 U4的ASP.NET MVC 5项目。 我想在注册期间向用户添加声明,以便存储在db中。 这些声明代表用户自定义属性。 当我为管理员创建一个用于创建/编辑/删除用户的网页时,我仍然使用AccountController create方法创建用户,但我不想登录该用户。 如何将这些声明添加到用户?