小编ret*_*vek的帖子

ASP.NET 5,MVC6,WebAPI - > ModelState.IsValid始终返回true

我看过很多关于IsValid的帖子总是如实,但没有一个能帮助我解决这个问题.我也在使用MVC5的ASP.NET 4中看到了这个问题.很明显我在某个地方错过了一步.

控制器方法:

public IHttpActionResult Post([FromBody]ValuesObject value)
{
    if (ModelState.IsValid)
    {
        return Json(value);
    }
    else
    {
        return Json(ModelState);
    }
}
Run Code Online (Sandbox Code Playgroud)

ValuesObject类:

public class ValuesObject
{
    [Required]
    public string Name;

    [Range(10, 100, ErrorMessage = "This isn't right")]
    public int Age;
}
Run Code Online (Sandbox Code Playgroud)

POST的身体:

{
  Age: 1
}
Run Code Online (Sandbox Code Playgroud)

ModelState.IsValid为true.

但我希望Required和Range验证都失败.

我错过了什么?

谢谢,

凯文

c# asp.net asp.net-web-api asp.net-core

7
推荐指数
1
解决办法
3232
查看次数

.NET Core使用ConfigurationManager.AppSettings消耗标准.NET库

我有一个标准的.NET 4.5.2库,我已经使用多年了.它依赖于ConfigurationManager.AppSettings,这意味着我必须确保我的app或web.config文件的appSettings部分中有一组特定的设置.无法传递这些值.您必须将它们放在appSettings部分中.

我正在.NET Core中开始一个新项目,但目标是Net452,这样我就可以利用一些库(到目前为止工作正常).

我遇到了这个最新库的问题,因为我无法弄清楚如何正确设置设置,以便ConfigurationManager.AppSettings可以找到它们.

将它们放在appSettings.json中似乎不起作用.将它们放在web.config中似乎也不起作用.

这甚至可能吗?

谢谢!

.net asp.net-core

7
推荐指数
1
解决办法
1579
查看次数

ASP.NET 5 - MVC 6 - 单元测试使用Url.Action的Controller

我有一个MVC6控制器,代码如下:

string link = Url.Action("Profile", "Account");
Run Code Online (Sandbox Code Playgroud)

当我对该控制器进行单元测试时,该行失败并显示错误:

Value cannot be null.
Parameter name: helper
Run Code Online (Sandbox Code Playgroud)

我真的不想模仿Url.Action响应加上我认为我不能,因为它是一个扩展方法(静态方法).我想让它像在Web环境中一样运行和返回.

在单元测试中实例化控制器时我需要做什么才能使上面的行按预期执行?

我看到我可以在单元测试中做到这样的事情:

controller.Url = new UrlHelper(new ActionContextAccessor(), new DefaultActionSelector(...));
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚设置ActionContextAccessor和/或DefaultActionSelector需要什么(它需要更多类型,我不知道在哪里获取或如何实例化).

有没有人这样做过?

谢谢,凯文

c# asp.net-mvc unit-testing

3
推荐指数
1
解决办法
826
查看次数