Tag: asp.net mvc 5

MVC HttpRequestValidationExceptionexception

我正在编写一个MVC 5互联网应用程序,并对HttpRequestValidationExceptionexception有疑问。 我之前在我的控制器中的代码如下: protected override void OnException(ExceptionContext filterContext) { // Make use of the exception later this.Session[“ErrorException”] = filterContext.Exception; if (filterContext.Exception is HttpRequestValidationException) { TempData[“UITitle”] = “Validation”; TempData[“UIHeading”] = customErrorType; TempData[“UIMessage”] = filterContext.Exception.Message; TempData[“UIException”] = filterContext.Exception; filterContext.ExceptionHandled = true; } else { TempData[“UITitle”] = “Error”; TempData[“UIHeading”] = customErrorType; TempData[“UIMessage”] = filterContext.Exception.Message; TempData[“UIException”] = filterContext.Exception; } […]

自定义DataAnnotationsModelMetadataProvider无法正常工作

我有许多属性需要一个或多个validation属性,如下所示: public class TestModel { [Some] [StringLength(6)] [CustomRequired] // more attributes… public string Truck { get; set; } } 请注意以上所有注释都有效。 我不想一直写这个,因为每当应用Some时,所有其他属性也会应用于属性。 我希望能够做到这一点: public class TestModel { [Some] public string Truck { get; set; } } 现在这可以通过inheritance来实现; 因此,我编写了一个自定义DataAnnotationsModelMetadataProvider并覆盖了CreateMetadata 。 这会查找使用Some修饰的任何内容,然后为其添加更多属性: public class TruckNumberMetadataProvider : DataAnnotationsModelMetadataProvider { protected override ModelMetadata CreateMetadata(IEnumerable attributes, Type containerType, Func modelAccessor, Type […]

具有多个前导零小数的属性路由

当前的ActionResult: [Route(“EvaluatorSetup/{evalYear}/{department}”)] public ActionResult RoutedEvaluatorSetup(int evalYear, string department) { return EvaluatorSetup((int?)evalYear, department); } 我想用url: /EvaluatorSetup/2014/001.3244 但是,{department}最终是一个字符串,路由不会将{department}作为字符串。 答:我不知道MVC对“001.3244”的期望是什么类型,或者它正在捡起它的类型。 B.我想将它维护为带有可选前导零的字符串,如示例中所示。 我究竟做错了什么? 更新: 我的意思是,当我在返回线上的代码中断时,它永远不会触发。 /EvaluatorSetup/2014/foobar (WORKS!) /EvaluatorSetup/2014/001.3244 (DOESN’T WORK!) 这让我相信我的路由不正确: [Route(“EvaluatorSetup/{evalYear}/{department}”)] 具体来说,似乎001.3244不是有效的字符串。 所以我的问题是如何纠正这个问题: [Route(“EvaluatorSetup/{evalYear}/{department}”)] public ActionResult RoutedEvaluatorSetup(int evalYear, string department) 所以我可以进入一个uri: /EvaluatorSetup/2014/001.3244 优选地,保持前导零的位置。 我想过这样的事情: [Route(“EvaluatorSetup/{evalYear}/{corporation}.{department}”)] 然而,这是猜测。 我甚至不知道这是否有效。 其他更新: RouteConfig.cs中的旧路由(似乎不再起作用)是这样的: routes.MapRoute( “evaluations_evaluatorsetupget”, “evaluations/evaluatorsetup/{evalyear}/{department}”, new { controller = “evaluations”, action […]

HangFire重复出现的任务数据

我正在编写一个MVC 5互联网应用程序,并使用HangFire进行重复性任务。 如果我有一个月度重复任务,我怎样才能获得下一个执行时间的值? 这是我的重复任务的代码: RecurringJob.AddOrUpdate(“AccountMonthlyActionExtendPaymentSubscription”, () => accountService.AccountMonthlyActionExtendPaymentSubscription(), Cron.Monthly); 我可以按如下方式检索作业数据: using (var connection = JobStorage.Current.GetConnection()) { var recurringJob = connection.GetJobData(“AccountMonthlyActionExtendPaymentSubscription”); } 但是,我不确定下一步该做什么。 是否有可能获得重复任务的下一个执行时间? 提前致谢。

在ASP.NET MVC 5中将整个对象从视图传递到控制器

有没有办法将整个对象从ASP.NET MVC 5 View传递给Controller? 这是我的情况: 我有一个显示数据库表中所有行的视图 视图的模型是IEnumerable 每行都有一个链接,它的数据导致了scaffolded UPDATE视图 有没有办法将整个对象传递给Update控制器方法,以便它最初用旧数据填充表单输入? 就像是: @Html.Action(“Update me!”, “Update”, new { objectFromModelList }) 然后在控制器中 public ActionResult Update(MyType parameter) { return View(parameter); } 或类似的东西。 请帮助,我是新手,无法在任何地方找到答案。

条件ModelState合并

我实现了第二个响应“ 保留模型状态错误跨RedirectToAction? ”问题,涉及使用两个自定义ActionFilterAttributes。 我喜欢这个解决方案,它通过向需要该function的方法添加属性来保持代码清洁。 解决方案在大多数情况下运行良好,但我遇到了重复的部分视图问题。 基本上我有部分视图使用它自己的模型,与父视图使用的模型分开。 主视图中我的代码的简化版本: @for (int i = 0; i < Model.Addresses.Count; i++) { address = (Address)Model.Addresses[i]; @Html.Partial("_AddressModal", address); } 部分视图“_AddressModal”: @model Acme.Domain.Models.Address […] @Html.TextBoxFor(model => model.Address1, new { @class = “form-control” } ) […] 不使用自定义ActionFilterAttributes时,一切都按预期工作。 每次执行部分视图时,lamba表达式如“model => model.Address1”从ModelState中提取正确的值。 问题是当我获得重定向并使用自定义ActionFilterAttributes时。 核心问题是,不仅更新了一个Address实例的ModelState,而且部分视图构建的所有地址的ModelState都被覆盖,因此它们包含相同的值,而不是正确的实例值。 我的问题是如何修改自定义ActionFilterAttributes,以便它只更新受影响的一个Address实例的ModelState,而不是所有ModelStates? 我想避免向使用该属性的方法添加任何内容,以保持干净的实现。 以下是来自其他问题的自定义ActionFilterAttributes代码: public class SetTempDataModelStateAttribute : ActionFilterAttribute { public override […]

如何在DataAnnotation中本地化ErrorMessage?

使用MVC 5我需要为DataAnnotation属性本地化ErrorMessage。 我收到以下错误 错误 属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式 在模型中 [Compare(“Password”, ErrorMessage = Resources.Account_Register_ConfirmPasswordErrorMessage)] public string ConfirmPassword { get; set; } 知道怎么解决吗?

ASP.NET MVC 5模型绑定列表为空

我坚持这个问题一段时间.. 我创建了一个简单的视图模型: public class AddTranslationViewModel { public List ProjectTranslations { get; set; } public AddTranslationViewModel() { ProjectTranslations = new List(); } } ProjectTranslation类: public class ProjectTranslation { public int ProjectTranslationId { get; set; } public string Title { get; set; } public string Description { get; set; } public string Address { get; set; } […]

如果我在IQueryable上使用等待+ ToListAsync()并且未定义为任务,那么它是否正确

我正在使用带有EF-6的asp.net MVC-5,我不确定使用await + ToListAsync是否有效。 例如,我有以下存储库方法,它返回IQueryable: – public IQueryable getAllScanEmailTo() { return t.TSets.Where(a=>a.Name.StartsWith(“ScanEmail”)); } 我称之为: – var emailsTo = await repository.getAllScanEmailTo().ToListAsync(); 一开始,我以为我会得到一个错误,因为我正在使用“等待”一个未被定义为任务的方法,但上面工作得很好,所以有人可以就此提出建议吗?

Identity Owin是否需要LazyLoading?

tl; dr:Identity似乎要求禁用LazyLoading; 这是真的,什么是最干净的解决方法? 我使用EntityFramework 6.0.2,Identity EntityFramework 1.0.0和Identity Owin 1.0.0对一个简单的C#ASP.NET 4.5.1 MVC-5 Web应用程序进行了一些基本的AB测试,看来Owin要求延迟加载不是在ApplicationContext构造函数中禁用。 要复制该问题,只需使用Visual Studio 2013创建一个快速的MVC应用程序,使用MVC模板,将所有内容保留为默认值,但取消注释该行:’app.UseGoogleAuthentication();’ 在App_Start / Startup.Auth.cs中。 运行该应用程序并使用Google登录,完成它带您到的缩写注册页面并转到帐户/管理。 您应该会在底部看到2个Google按钮。 停止应用程序。 现在转到ApplicationContext.cs并更改构造函数,如下面的代码片段所示: public ApplicationContext() : base(“DefaultConnection”) { } //Works! public ApplicationContext() : base(“DefaultConnection”) { this.Configuration.LazyLoadingEnabled = false; } //Does not work 重试测试。 只能显示1个Google按钮。 如果LazyLoadingEnabled = false,则不会加载用户角色,登录(也可能是索赔)。 我的理论是,这是微软的监督/“未来特征”,因为Identity EntityFramework和Identity Owin都是版本1.0.0。 我的问题是,这个测试能否得到确认,最干净的工作是什么? 出于我的目的,我将使用.ToList()和其他方法在我想使用它时强制执行EagerLoading。 我并不真的需要禁用LazyLoading,如果你想总是使用预先加载,它只是一种更安全的代码编写方式。 即你错过了一个地方,它使它生产,你有一个很好的错误,在某些视图中你正在迭代模型和Model.xy y == […]