使用String.Format()时丢失TextBoxFor值

时间:2014-09-15 03:40:05

标签: c# asp.net-mvc

当视图模型发送到控制器时,使用以下代码MyValue时会丢失。

@Html.TextBoxFor(x => Model.MyValue, new { @Value = String.Format("{0:N0}", Model.MyValue) })

当我删除String.Format()部分时,值正确传递。 Fyi,MyValue是双重的。

如何在保留格式的同时传递MyValue

我尝试过使用单独的HiddenFor,但这不起作用。另外,我怀疑如果MyValue字符串而不是double,则值将被传递。但是,现在我宁愿保持双倍,除非没有更简单的方法。

修改

不幸的是,我仍然遇到同样的问题。以下是有关情况的更多细节。

当我输入不带逗号的数字(例如123456)时,以下代码正常工作:该号码被发送到控制器的“保存”操作,并且文本框中显示123,456。但是,当我再次单击“保存”并尝试使用逗号输入数字123,456时,“保存”操作仅在模型参数中接收零并且文本框中显示零

我做错了什么?

以下是模型:

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 :(得分:1)

尝试使用它:

  @Html.TextBoxFor(model => model.MyValue, new { @Value = Model.MyValue.ToString("N0") })