无法将格式化的TextBoxFor Value发送回控制器

时间:2014-09-16 18:16:57

标签: c# asp.net-mvc-5

当我输入不带逗号的号码(例如,123456)时,以下代码正常工作:号码被发送到控制器的Save操作,123,456显示在文本框中。

但是,当我再次点击Save并尝试使用逗号输入数字123,456时,Save操作只会在模型参数中收到零,而零则为0然后显示在文本框中。

我做错了什么?

这是模型类:

public class FormatTextBoxFor
{
    public double MyDouble { get; set; }
}

这是控制器:

    public class FormatTextBoxForController : Controller
    {           
        public ActionResult Index()
        {
            FormatTextBoxFor model = new FormatTextBoxFor();
            return View(model);   
        }

        [HttpPost]
        public ActionResult Save(FormatTextBoxFor model)
        {
            return View("Index", model);
        }
    }    

观点:

@using (Html.BeginForm("Save", "FormatTextBoxFor", FormMethod.Post))
{
    <p>@Html.TextBoxFor(x => x.MyDouble,  string.Format("{0:n0}", Model.MyDouble) )</p>

    <input type="submit" name="submit" value="Save" id="submit" />
}

1 个答案:

答案 0 :(得分:0)

这是因为在服务器123,456被视为文本而不是您在模型中定义的数字。在服务器上,发送的任何值都将映射到模型的属性,并使用默认解析器进行解析。在将值发送到服务器之前,必须重新格式化该值。