我有一个控制器,视图和模型如下
//model
public class ItemViewModel
{
public string name {get;set;}
public decimal? TotalPrice { get; set; }
}
//controller
[HttpPost]
[MultipleButton(Name = "action", Argument = "Submit")]
public ActionResult Submit(ItemViewModel model)
{
decimal? a = model.TotalPrice;
Console.WriteLine(a);
}
//view
@Html.EditorFor(model => model.TotalPrice, new { htmlAttributes = new { @class = "form-control" } })
<input type="submit" name="action:Submit" class="btn btn-primary" value="Submit"/>
当我调试模型时。如果有逗号(例如10,234,776),TotalPrice始终为null,但是如果没有逗号,它将获得实际结果。有什么主意吗?
答案 0 :(得分:1)
//Change your ItemViewModel like
public class ItemViewModel
{
public string name { get; set; }
public string TotalPrice { get; set; }
}
//Introduce your custom Parser to handle the comma case
private bool MyTryParse(string toParse, out decimal result)
{
//Remove commas
string formatted = toParse.Replace(",", "");
return decimal.TryParse(formatted, out result);
}
//And your controller be like
[HttpPost]
[MultipleButton(Name = "action", Argument = "Submit")]
public ActionResult Submit(ItemViewModel model)
{
decimal a = null;
if (MyTryParse(model.TotalPrice, out a))
{
//Success code
}
else
{
//some error code
}
Console.WriteLine(a);
}
注意:也许不是最好的,但可行的解决方案。希望这对您有帮助。
答案 1 :(得分:0)
您的代码需要一个小数,文本框需要一个字符串。 ViewModel是您进行转换的地方。
private decimal totalPriceDecimal;
private string totalPriceString;
public string TotalPrice
{
get
{
return this.totalPriceString();
}
set
{
this.totalPriceString = value;
decimal temp;
if (int.TryParse(value, out temp))
{
this.totalPriceDecimal = temp;
}
}
}
然后,您需要十进制的代码可以使用totalPriceDecimal,而您可以将字符串绑定到文本框。
更重要的是,如果用户输入了无法解析的内容,您就会知道并可以显示错误消息。
答案 2 :(得分:0)
我试过了,它工作正常 以下是代码和分配的视图
[HttpPost]
public ActionResult Submit(ItemViewModel model)
{
decimal? a = model.TotalPrice;
Console.WriteLine(a);
return View();
}
public ActionResult Submit()
{
return View();
}
// ================================================ =====
@model WebApplication4.Controllers.ItemViewModel
@ Html.BeginForm() { @ Html.EditorFor(model => model.TotalPrice,新{htmlAttributes =新{@class =“ form-control”}}) }