模型绑定中可为空

时间:2017-07-23 11:08:47

标签: asp.net asp.net-core-mvc

我在VS 2017中使用ASP.NET Core。我想允许用户创建一个员工记录,他们可以将地址输入字段留空,即作为可选字段输入。

使用[Bind(“Name”,“Address”)]始终验证输入,当地址字段为空时,请求将始终失败。

这是数据模型。

Object.keys(startups).map((startup) => {
  return (
    <div>{startups[startup].proyect_name}</div> //for example
  )
})

并且从Post请求读取参数的Create方法具有如下的模型绑定

public class Employee
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
}

并且视图具有使用Employee Model的默认asp表单。

public async Task<IActionResult> Create([Bind("Name,Address")] Employee emp)

有没有办法让地址输入字段作为模型绑定的可选输入?

1 个答案:

答案 0 :(得分:0)

我对Asp.net核心很新,但从我迄今为止所学到的知识来看,我就是这样做的:

Name

您希望public class Employee { public int ID { get; set; } [Required] public string Name { get; set; } public string Address { get; set; } } 是可选的,默认为true,因此您实际上想要public async Task<IActionResult> Create(Employee emp) { if (ModelState.IsValid) { // Do whatever you want here... } }

var res = img1.MatchTemplate(img2, TemplateMatchingType.CcoeffNormed);
        int maxXIdx = 0, maxYIdx = 0;
        float maxVal = float.MinValue;
        var dat = res.Data;
        int numChanels = dat.GetLength(2),
            numCols = res.Cols, numRows = res.Rows;
        for (int i = 0; i < numChanels; i++)
        {
            for (int x = 0; x < numCols; x++)
            {
                for (int y = 0; y < numRows; y++)
                {
                    var val = dat[y, x, i];
                    if (val > maxVal)
                    {
                        maxVal = val;
                        maxXIdx = x;
                        maxYIdx = y;
                    }
                }
            }
        }
        int shiftX = maxXIdx, shiftY = maxYIdx;

你的控制器:

{{1}}
  

如果属性对其包含有效,则该属性被视为可选   空值。如果null不是要分配给属性的有效值,那么   它被认为是必需的财产。

后来

  

您可以使用数据注释来指示属性是必需的。

来自docs.microsoft