相关疑难解决方法(0)

将JSON对象传递给MVC Controller时,string.empty转换为null

我正在将一个对象从客户端传递给服务器.在此过程中,表示为string.empty的对象的属性将转换为null.当对象类型支持string.empty时,我想知道如何防止这种情况.

在此输入图像描述

console.log("DataToPost:", dataToPost);

$.ajax({
    type: "POST",
    contentType: 'application/json'
    url: "../../csweb/Orders/SaveOrderDetails/",
    data: dataToPost,
    success: function (result) {
        console.log(result);
    },
    error: function (e) {
        console.error(e);
    }
});
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我的模型包含可空的DateTime对象.我不能强制服务器上的所有空值到string.empty.

我正在使用AutoMapper,所以我不想在服务器上单独检查属性.

javascript c# asp.net-mvc jquery

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

ASP.NET MVC - 值类型的自定义验证消息

当我使用UpdateModel或TryUpdateModel时,MVC框架足够聪明,可以知道您是否尝试将null传入值类型(例如,用户忘记填写所需的Birth Day字段).

不幸的是,我不知道如何覆盖默认消息"需要一个值".在总结中更有意义的事情("请输入您的出生日").

必须有一种方法可以做到这一点(没有编写过多的解决方法),但我找不到它.有帮助吗?

编辑

此外,我想这也是无效转换的问题,例如BirthDay ="Hello".

validation asp.net-mvc

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

为什么我的ApiController方法具有可为空参数的ModelState.IsValid失败?

我有一个接受几个参数的ApiController方法,如下所示:

    // POST api/files
    public HttpResponseMessage UploadFile
    (
        FileDto fileDto,
        int? existingFileId,
        bool linkFromExistingFile,
        Guid? previousTrackingId
    )
    {
        if (!ModelState.IsValid)
            return Request.CreateResponse(HttpStatusCode.BadRequest);

        ...
    }
Run Code Online (Sandbox Code Playgroud)

当我发布POST时,我将FileDto对象放在请求的正文中,并将其他参数放在查询字符串上.

我已经发现我不能简单地省略可以为空的参数 - 我需要将它们放在带有空值的查询字符串上.所以,当我不想为可空参数指定值时,我的查询看起来像这样:

http://myserver/api/files?existingFileId=&linkFromExistingFile=true&previousTrackingId=
Run Code Online (Sandbox Code Playgroud)

这与我的控制器方法匹配,并且当执行该方法时,可以为空的参数null(正如您所期望的那样).

但是,对ModelState.IsValid返回的调用false,当我检查它们时,它正在抱怨两个可以为空的参数.(模型的其他位没有错误).消息是:

值是必需的,但请求中不存在.

为什么它认为价值是必需的/不存在的?当然(a)中的值要求可为空的,和(b)的值是(排序的)本-中的一种方式的空杂交排序?

model-binding asp.net-web-api

16
推荐指数
2
解决办法
4304
查看次数

当我有一个可以为null的参数时,ModelState.IsValid为false

我在一个全新的MVC Web API项目中重现了我遇到的问题.

这是默认代码,略有修改.

public string Get(int? id, int? something = null)
{
    var isValid = ModelState.IsValid;
    return "value";
}
Run Code Online (Sandbox Code Playgroud)

如果你去,http://localhost/api/values/5?something=123那么这很好,isValid是true.

如果你去http://localhost/api/values/5?something=那么isValid是false.

我遇到的问题是,如果为可以为空的项提供null或省略的值,ModelState.IsValid会标记验证错误 "A value is required but was not present in the request."

ModelState字典也如下所示:

在此输入图像描述

有两个条目something,一个可以为空,我不确定它是否重要.

知道如何解决这个问题,以便在省略可空参数或提供为null时模型是有效的吗?我在我的web api中使用模型验证,如果每个带有可为空参数的方法都会产生模型错误,它就会破坏它.

asp.net-mvc model-binding asp.net-web-api

11
推荐指数
1
解决办法
5701
查看次数