小编Pau*_*les的帖子

如何让MVC动作返回404

我有一个动作,它接受一个用于检索一些数据的字符串.如果此字符串导致没有返回数据(可能因为它已被删除),我想返回404并显示错误页面.

我目前只是使用返回一个特殊视图,该视图显示特定于此操作的友好错误消息,指出未找到该项目.这样可以正常工作,但理想情况下会返回404状态代码,以便搜索引擎知道此内容不再存在,并且可以将其从搜索结果中删除.

最好的方法是什么?

它是否像设置Response.StatusCode = 404一样简单?

error-handling asp.net-mvc http-status-code-404

135
推荐指数
8
解决办法
9万
查看次数

将EF迁移整合到新的InitialCreate中

我一直在使用EF迁移一段时间,并且在我的项目中有超过100个迁移文件.我希望在继续之前将这些整合到一个迁移中 - 即我想用一个新版本替换现有的InitialCreate迁移,该版本将我的所有后续更改都考虑在内,这样我就可以删除所有其他迁移文件.

如果我不关心丢失数据库中的所有数据,我很容易这样做,但我是.

如何通过运行Update-Database(我认为使用Julie Lerman概述的方法无法实现)来保持所有数据的完整性并保留从头开始重新创建数据库(无数据)的能力?

entity-framework ef-migrations entity-framework-5

47
推荐指数
2
解决办法
8375
查看次数

MVC3中的IValidatableObject - 客户端验证

使用MVC3,您可以使用两种新的机制来添加自定义验证.这些是(1)子类ValidationAttribute或(2)实现IValidatableObject.

ValidationAttribute允许您通过实现IClientValidatable(并通过jQuery注册新的适配器和方法)相对简单地添加客户端验证.

IValidatableObject更适合于一次性验证要求,其中重用不是一种选择.它还导致更简单的代码.因此,它是我选择的一些场景.不幸的是,我没有看到使用此方法实现客户端验证的简单方法.

所以问题是我缺少什么以及在使用IValidatableObject时如何获得JS验证?

validation client-side-validation asp.net-mvc-3

33
推荐指数
1
解决办法
9441
查看次数

如何从web.config中读取system.web部分

应该很简单,但无论我尝试什么都返回null:

const string key = "system.web";

var sectionTry1 = WebConfigurationManager.GetSection(key);

var sectionTry2 = ConfigurationManager.GetSection(key);
Run Code Online (Sandbox Code Playgroud)

我相信我以前做过这件事.

如果这有所作为,我正在使用MVC.

c# asp.net-mvc web-config configuration-management

14
推荐指数
3
解决办法
2万
查看次数

正则表达式可选前瞻

我想要一个正则表达式来匹配所有这些:

  1. startabcend
  2. startdef
  3. blahstartghiend
  4. blahstartjklendsomething

并返回abc,def,ghijkl分别.

我有以下这个适用于案例1和3,但我很难使前瞻可选.

(?<=start).*(?=end.*)
Run Code Online (Sandbox Code Playgroud)

编辑:

嗯.不好的例子.实际上,中间的位不是数字,而是先于一组特定的字符,并且可选地由它继续.我已根据要求更新了输入和输出,并添加了第4个示例以回应某些问题.

regex

13
推荐指数
2
解决办法
9492
查看次数

如何使用Entity Framework 4 Code First(POCO)声明一对一关系

如何使用Entity Framework 4 Code First(POCO)声明一对一的关系?

我发现了这个问题(实体框架4中的一对一关系),但是答案引用的文章没有用(有一行代码是1-1关系,但没有提到如何定义它).

c# entity-framework one-to-one poco ef-code-first

12
推荐指数
2
解决办法
4万
查看次数

无法在MVC2中设置自定义验证属性的成员名称

我通过继承ValidationAttribute创建了一个自定义验证属性.该属性在类级别应用于我的viewmodel,因为它需要验证多个属性.

我压倒一切

protected override ValidationResult IsValid(object value, ValidationContext validationContext)
Run Code Online (Sandbox Code Playgroud)

并返回:

new ValidationResult("Always Fail", new List<string> { "DateOfBirth" }); 
Run Code Online (Sandbox Code Playgroud)

在所有情况下,DateOfBirth是我的视图模型上的属性之一.

当我运行我的应用程序时,我可以看到它被击中.ModelState.IsValid正确设置为false但是当我检查ModelState内容时,我看到Property DateOfBirth不包含任何错误.相反,我有一个值为null的空字符串Key和一个包含我在验证属性中指定的字符串的异常.

这导致在使用ValidationMessageFor时,我的UI中不显示任何错误消息.如果我使用ValidationSummary,那么我可以看到错误.这是因为它与属性无关.

它看起来好像忽略了我在验证结果中指定了membername的事实.

为什么这样,我该如何解决?

要求的示例代码:

 [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
    public class ExampleValidationAttribute : ValidationAttribute
    {
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            // note that I will be doing complex validation of multiple properties when complete so this is why it is a class level attribute
            return new ValidationResult("Always Fail", new List<string> { "DateOfBirth" });
        } …
Run Code Online (Sandbox Code Playgroud)

validation asp.net-mvc data-annotations asp.net-mvc-2

9
推荐指数
2
解决办法
3478
查看次数

捕获BeginForm样式的一次性html帮助程序中的包装内容

我正在尝试编写一个BeginForm样式的html帮助器,它使用IDisposable来包装其他代码.我希望帮助器只在满足某个条件时呈现包装的代码(例如,用户处于某个角色).

我以为我可以简单地在Begin方法中切换context.Writer并在Dispose方法中将其切换回来.下面的代码编译并运行,但包装的内容在所有情况下都会呈现.如果我单步执行它,包装的内容不会写入新的StringWriter,因此不在我的控制范围内.

    public static IDisposable BeginSecure(this HtmlHelper html, ...)
    {
        return new SecureSection(html.ViewContext, ...);
    }

    private class SecureSection : IDisposable
    {
        private readonly ViewContext _context;
        private readonly TextWriter _writer;

        public SecureSection(ViewContext context, ...)
        {
            _context = context;
            _writer = context.Writer;
            context.Writer = new StringWriter();
        }

        public void Dispose()
        {
            if (condition here)
            {
                _writer.Write(_context.Writer);
            }

            _context.Writer = _writer;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我正在尝试用html帮助器做什么?

我知道razor中的声明性html助手可能会工作,但如果可能的话,我会更喜欢标准的html助手方法,因为MVC3中的razor助手的app_code限制.

html-helper asp.net-mvc-3

9
推荐指数
2
解决办法
1610
查看次数

在azure cdn上托管字体 - CORS支持

我无法通过在IE或Firefox中工作的azure cdn暴露出azure blob存储托管字体.

我相信这是因为@ font-face跨域问题(CORS),正常的解决方案是添加一个Access-Control-Allow-Origin标头.我知道大多数CDN现在支持这个,但我假设Azure仍然没有.谁能证实这一点?

如果是这种情况,有没有解决方法?

cdn azure-storage azure-storage-blobs cors azure-cdn

9
推荐指数
1
解决办法
7445
查看次数

仅在.NET Core 2.0运行时的Linux上缺少运行时存储库错误

我正在将一些应用程序从.NET Core 1.1更新到2.0.这些应用程序在本地运行良好,但在我的linux VM上更新Runtime并进行部署后,我收到错误:

未找到应用程序依赖项清单(foo.deps.json)中指定的程序集:package:'Microsoft.ApplicationInsights.AspNetCore',version:'2.1.1'path:'lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore .dll'
当使用以下目标清单文件发布应用程序时,此程序集应位于本地运行时存储中:aspnetcore-store-2.0.0-linux-x64.xml; aspnetcore-store-2.0.0-osx- x64.xml; aspnetcore-STORE-2.0.0-WIN7-x64.xml; aspnetcore-STORE-2.0.0-WIN7-x86.xml

我认为这是因为运行时下载不会生成使用Microsoft.AspNetCore.All包时所需的新运行时存储文件夹.

我可以安装整个SDK,这样可以正常工作但我宁愿继续只使用运行时.

如何在不需要生产服务器上的SDK的情况下手动生成运行时缓存?

.net linux asp.net-core asp.net-core-2.0

9
推荐指数
1
解决办法
3015
查看次数