Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#MVC asp.net模型中的解析_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 5 - Fatal编程技术网

C#MVC asp.net模型中的解析

C#MVC asp.net模型中的解析,c#,asp.net,asp.net-mvc,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 5,家庭作业,动手作业 我有一个模型,它在html页面中弹出一个简单的添加表单。编写视图模型是为了处理所需的值(例如:[Required(ErrorMessage=“缺少一个数字,请输入要添加的小数)。] 但是,在域模型中,我需要TryParse两个输入字段来验证输入的值是否为十进制值(正数或负数)。我已尝试根据[Range]进行筛选,一个简单的TryParse,Parse,以及我知道如何做但无法绕过异常实际看到错误消息的所有其他事情(如上面的“缺少一个数字,请输入小数以添加”)。我搜索了此网站和许

家庭作业,动手作业

我有一个模型,它在html页面中弹出一个简单的添加表单。编写视图模型是为了处理所需的值(例如:
[Required(ErrorMessage=“缺少一个数字,请输入要添加的小数)。]

但是,在
模型中,我需要
TryParse
两个输入字段来验证输入的值是否为十进制值(正数或负数)。我已尝试根据[Range]进行筛选,一个简单的
TryParse
Parse
,以及我知道如何做但无法绕过异常实际看到错误消息的所有其他事情(如上面的“缺少一个数字,请输入小数以添加”)。我搜索了此网站和许多其他网站,包括:

还有…任何帮助都将不胜感激

public class MyAbacusDomainModel
{
  public MyAbacusDomainModel(string number1, string number2)
  {
    Number1 = number1;
    Number2 = number2;
    Sum = CalculateSum(number1, Number2);
  }

  public string Sum { get; set; }
  public string Number1 { get; set; }
  public string Number2 { get; set; }

  // need to parse the two number values here to get the boolean results

  private string CalculateSum(string number1, string number2)
  {
    double number1double = Convert.ToDouble(number1);
    double number2double = Convert.ToDouble(number2);
    double sum = (number1double + number2double);
    return sum.ToString();    
  }              
}
这有用吗

decimal number;

// Parse a floating-point value with a thousands separator.

var value = "1,643.57";

Decimal.TryParse(value, out number);

可以将viewmodel属性设置为具有Required和Range属性的double?类型

您不需要检查wheter值是否为双精度值,因为如果控制器的操作中ModelState.IsValid为true,则它们始终是良好的值

[Required]
public double? Number {get; set;}
如果有必要在域模型中使用字符串值,那么您可以将输入解析为字符串。它将始终是双值,因此您不需要进行任何额外的检查


如果你的家庭作业没有这样的要求,那么最好改变存储域模型值的类型。将数字存储为字符串是不常见的,也是错误的。

你能解释一下为什么要在字符串中存储数字吗?为什么不简单地将数字1/2声明为双精度/十进制?也许可以使用
合同de>?作业有一个字符串代码段(只有数字),讲师没有给出任何说明,所以我将其转换为双精度代码段,但仍试图克服异常。