Tag: asp.net mvc 4

部分视图中的ASP.NET MVCvalidation并返回到父视图

我的背景 我正在使用ASP.NET MVC 4开展第一个认真的项目。自从经典的ASP时代以来,我正致力于Web开发,并且已经很好地掌握了Webforms。 MVC非常令人兴奋,并且正在取得良好进展。 但现在我处在这个论坛需要帮助的情况下。 查询背景 我有一个父视图,里面有一个局部视图。 部分视图包含表单和提交按钮。 局部视图具有自己的局部视图模型,该视图模型是父视图模型的属性之一。 如果部分视图的validation失败,我想,按原样显示父视图并在部分视图中突出显示无效字段。 代码不会破坏任何地方,但是当存在validation错误时,不知何故,我找不到正确的方式来显示传递给它的初始化模型的父视图。 当然,要在局部视图中突出显示错误。 任何帮助,将不胜感激。 谢谢。 代码如下所示: 查看型号: public class ParentViewModel { public int TitleId { get; set; } public string Name { get; set; } public ChildViewModel Child { get; set; } } public class ChildViewModel { [Required] public decimal Rating { get; set; } […]

使脚本包包含另一个脚本包

假设我配置了这两个脚本包: bundles.Add(new ScriptBundle(“~/Scripts/Bootstrap”).Include( “~/Content/Scripts/jQuery/jquery-2.1.1.js”, “~/Content/Scripts/Bootstrap/bootstrap.js”)); bundles.Add(new ScriptBundle(“~/Scripts/jQuery”).Include( “~/Content/Scripts/jQuery/jquery-2.1.1.js”)); 如您所见, ~/Scripts/Boostrap使用jQuery JavaScript文件和Bootstrap文件。 这是因为Bootstrap需要jQuery才能工作。 另一方面, ~/Scripts/jQuery只由jQuery文件组成。 我希望有两个捆绑包,以防视图只需要jQuery而不是Bootstrap。 但是,我在这里复制代码,我定义了两次 jQuery JavaScript文件路径。 有没有办法告诉~/Scripts/Boostrap包使用或“注入”另一个包? 像这样的东西: bundles.Add(new ScriptBundle(“~/Scripts/Bootstrap”).UseBundle(“~/Scripts/jQuery”).Include( “~/Content/Scripts/Bootstrap/bootstrap.js”));

MVC脚手架不支持Entity Framework 6或更高版本

刚刚升级到Entity Framework 6来看看。 我正在使用MVC4。 但是当我尝试从模型和上下文制作控制器时,我收到了这条消息。 MVC脚手架不支持Entity Framework 6或更高版本

使用OData Wep Api在数据传输对象上嵌套filter

我有一个wep api项目使用odata消耗数据但是我遇到了odata wep api的一些问题。 当我执行该查询时 / api / values?$ top = 50&$ filter = Comments / Fortuneteller / FullName eq’some string’ 它给了我以下错误 “消息”:“URI中指定的查询无效。”,“ExceptionMessage”:“属性’Fortuneteller’的属性访问的父值不是单个值。属性访问只能应用于单个值。” 我不想从控制器返回实体对象。 有没有办法通过DTO过滤实体? 我在我的项目中使用Repository + Service层模式,我的项目结构就是这样 api controller service repository EF api控制器 [Queryable] public IQueryable Get() { return service.FiterBy((_ => true)); } 服务 public IQueryable FiterBy(Expression<Func> filter) { return repository.List().Where(filter).Select(_ => new FortuneDTO […]

从基础asp.net标识用户创建inheritance用户

我有问题,我想在示例中创建N,两个用户对象(例如客户和供应商),这些都是asp.net IdentityUser对象所固有的。 除了来自IdentityUser的数据之外,这些对象具有非常不同的附加数据。 我想使用IdentityUser用户,因为这为我提供了一种灵活的方式来处理身份validation和授权。 这个例子已被删除,但应提供有关无法创建具体用户的充分信息(例如供应商的客户)。 我似乎需要使用UserManager对象,因为它还负责创建例如密码哈希和其他安全信息。 我收到以下错误: {“附加’供应商’类型的实体失败,因为同一类型的另一个实体已经具有相同的主键值。当使用’附加’方法或将实体的状态设置为’未更改’或’已修改时,可能会发生这种情况’如果图中的任何实体具有冲突的键值。这可能是因为某些实体是新的并且还没有接收到数据库生成的键值。在这种情况下,使用“添加”方法或“添加”实体状态来跟踪图表然后根据需要将非新实体的状态设置为“未更改”或“已修改”。“} IdentityUser固有的类 public class Customer : IdentityUser { public string CustomerProperty { get; set; } } public class Supplier : IdentityUser { public string SupplierProperty { get; set; } } 数据库上下文类 public class ApplicationDbContext : IdentityDbContext { public ApplicationDbContext() : base(“ApplicationDbContext”) { Database.SetInitializer(new ApplicationDbInitializer()); } public DbSet CustomerCollection […]

找不到错误页面,使用自定义错误页面引发ELMAH错误

我对Global.asax做了一些修改,以便我可以显示自定义错误页面(403,404和500)这是代码: public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); //FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } protected void Application_Error(object sender, EventArgs e) { if (Context.IsCustomErrorEnabled) { ShowCustomErrorPage(Server.GetLastError()); } } private void ShowCustomErrorPage(Exception exception) { HttpException httpException = exception as HttpException; if (httpException == null) { httpException = new HttpException(500, “Internal Server Error”, exception); } […]

在内存中缓存应用程序数据:MVC Web API

我正在编写一个MVC webAPI,它将用于返回将绑定到下拉框的值或在网站上用作提前输入文本框结果的值,我想在内存中缓存值,这样我就不需要执行数据库请求每次API被击中。 我将使用MemoryCache类,我知道我可以在第一个请求进入时填充缓存,但我不希望API的第一个请求比其他请求慢。 我的问题是:在WebAPI首次启动时,我有没有办法自动填充缓存? 我看到有一个“App_Start”文件夹,也许我只是在这里扔东西? 在初始填充之后,我可能会按小时/每日运行请求以根据需要更新缓存。 MemoryCache: http : //msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspx UDPATE Ela在下面的回答就是这个伎俩,基本上我只需要看看Global.asax的function。 感谢您在这里的快速帮助,这为我提出了一个单独的问题,关于不同缓存类型的优缺点。 不同ASP.NET缓存选项的优缺点

使用PostAsync,HttpClient和Json从C#Metro UI客户端调用MVC4 WebAPI方法

我已经使用MVC4中的新WebAPIfunction创建了一个方法,并让它在Azure上运行。 该方法要求您发布一个包含Username和Password属性的简单LoginModel对象。 是的,我计划在经过这个减速带后再进一步确保这个:-)然后该方法以Json格式响应一个对象: 我可以使用Fiddler成功调用此方法,前提是我在请求标头中包含“Content-Type:application / json”。 它返回200,我可以进入Fiddler检查器并查看Json响应对象就好了: 然而,我在使用C#/ XAML从Windows8中的MetroUI应用程序调用此相同方法时遇到问题。 我开始在C#中使用HttpClient和新的Async概念,无论我如何格式化我的Post调用(即使明确地调用我希望Content-Type为“application / json”)Fiddler返回500错误并声明该尝试使用的是Content-Type:“text / html”。 我相信这是问题的根源: 我已经尝试了所有可以想到的东西,以便发布到这个方法并获取Json对象,这是我最近的尝试: HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(“application/json”)); HttpContent content = new StringContent(@”{ “”Username””: “”” + Username.Text + @”, “”Password””: “”” + Password.Text + @”””}”); client.PostAsync(“http://myapi.com/authentication”, content).ContinueWith(result => { var response = result.Result; response.EnsureSuccessStatusCode(); }); 这导致500错误,Content-Type设置为“text / html” 这是另一次失败的尝试: HttpClient […]

entity framework5 MaxLength

我使用EF4和我发现的一段代码从这样的实体获取MaxLength值: public static int? GetMaxLength(string entityTypeName, string columnName) { int? result = null; using (fooEntities context = new fooEntities()) { Type entType = Type.GetType(entityTypeName); var q = from meta in context.MetadataWorkspace.GetItems(DataSpace.CSpace) .Where(m => m.BuiltInTypeKind == BuiltInTypeKind.EntityType) from p in (meta as EntityType).Properties .Where(p => p.Name == columnName && p.TypeUsage.EdmType.Name == “String”) select p; var queryResult […]

ASP.NET MVC:在不影响性能的情况下路由自定义slug

我想在我的CMS中为页面创建自定义slug,因此用户可以创建自己的SEO-urls(如Wordpress)。 我以前通过“滥用”404路由在Ruby on Rails和PHP框架中执行此操作。 无法找到请求的控制器时调用此路由,使我能够将用户路由到我的动态页面控制器以解析slug(如果没有找到页面,我将其重定向到真正的404)。 这样,仅查询数据库以检查所请求的段塞。 但是,在MVC中,只有当路由不符合/{controller}/{action}/{id}的默认路由时,才会调用catch-all路由。 为了仍然能够解析自定义slugs我修改了RouteConfig.cs文件: public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”); routes.MapHttpRoute( name: “DefaultApi”, routeTemplate: “api/{controller}/{id}”, defaults: new { id = RouteParameter.Optional } ); RegisterCustomRoutes(routes); routes.MapRoute( name: “Default”, url: “{controller}/{action}/{id}”, defaults: new { Controller = “Pages”, Action = “Index”, id = UrlParameter.Optional } ); } public static […]