如何使HTML Input标签在为空而不是null时返回空字符串?

时间:2018-07-26 19:58:03

标签: c# html asp.net-mvc get

我目前正在使用ASP.NET MVC,并尝试为我的应用程序创建一个前端网站。在此应用程序中,我通过HTTP GET传递了5个字段:

String1 _____ (required)
String2 _____ (default to * if empty serverside)
String3 _____
String4 _____
Integer5 ____ (String3, String4, OR Integer5 must be supplied; one or all, not none)

当前,我正在尝试使用数据注释(例如[Required][DisplayFormat(ConvertEmptyStringToNull = false)])在模型内部验证它们,并在null的情况下传递默认值。但是,对于String2,如果默认情况下需要特殊的通配符值,则传递空字符串会导致模型将null值转换为空,但完全忽略了我的默认值。我也使用ModelState.IsValid来强制执行我的视图模型,并且ModelState似乎忽略了控制器中的任何更改,因此IsEmptyorNull检查似乎不起作用。我的模型如下:

    public class ProjectInput
{
    [Required]
    public string String1 { get; set; } = "0";

    [DisplayFormat(ConvertEmptyStringToNull = false)]
    public string String2 { get; set; } = "****";

    [DisplayFormat(ConvertEmptyStringToNull = false)]
    public string String3 { get; set; } = "";

    [DisplayFormat(ConvertEmptyStringToNull = false)]
    public string String4 { get; set; } = "";

    [RegularExpression("[0-9]*")]
    public int Integer5 { get; set; } = 0;
}

我为此找到的一种解决方法是不手动在URL中指定问题字段,这导致它们使用我为其设置的默认值,但是我找不到通过提交来执行此操作的方法而不使用Javascript,我试图避免使用围绕AJAX的客户端验证方法。我还尝试为输入标签指定Placeholder的{​​{1}}标签,但这又导致再次为null。

我的问题重申:除了使用Javascript或AJAX客户端验证之外,如果在HTTP GET请求中留空,是否可以强制HTML中的输入标签返回给定值(而不是null)?如果没有,是否可以发出GET请求,将空白的提交内容排除在URL之外?

请注意,“不,您需要客户端验证/ Javascript”是我愿意(伤心欲绝)接受的答案,但是我想知道是否还有其他选择。

0 个答案:

没有答案