C# 使用String.Format()时丢失TextBoxFor value
使用以下代码时,视图模型发送到控制器时,MyValue将丢失C# 使用String.Format()时丢失TextBoxFor value,c#,asp.net-mvc,C#,Asp.net Mvc,使用以下代码时,视图模型发送到控制器时,MyValue将丢失 @Html.TextBoxFor(x=>Model.MyValue,新的{@Value=String.Format(“{0:N0}”,Model.MyValue)}) 当我删除String.Format()部分时,值被正确传递。仅供参考,MyValue为双精度 如何在保留格式的同时传递MyValue 我曾尝试使用一个单独的HiddenFor,但这不起作用。另外,我怀疑如果MyValue中传递的是字符串而不是双精度的值。然而,现在我宁愿
@Html.TextBoxFor(x=>Model.MyValue,新的{@Value=String.Format(“{0:N0}”,Model.MyValue)})
当我删除String.Format()部分时,值被正确传递。仅供参考,MyValue
为双精度
如何在保留格式的同时传递MyValue
我曾尝试使用一个单独的HiddenFor
,但这不起作用。另外,我怀疑如果MyValue
中传递的是字符串而不是双精度的值。然而,现在我宁愿保留双份,除非没有更简单的方法
编辑
不幸的是,我仍然有同样的问题。以下是有关情况的更多细节
当我输入一个没有逗号的数字(例如123456)时,以下代码可以正常工作:该数字被发送到控制器的保存操作,123456显示在文本框中。但是,当我再次单击“保存”并尝试用逗号输入数字123456时,保存操作仅在模型参数中接收到一个零,并且在文本框中显示一个零
我做错了什么
模型如下:
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" />
}
@使用(Html.BeginForm(“Save”、“FormatTextBoxFor”、FormMethod.Post))
{
@TextBoxFor(x=>x.MyDouble,string.Format(“{0:n0}”,Model.MyDouble))
}
尝试使用以下方法:
@Html.TextBoxFor(model => model.MyValue, new { @Value = Model.MyValue.ToString("N0") })
我只能猜测,但是你的双精度的值是多少?例如,如果您使用“0.333”执行此操作,它将显示“0”,并且只返回0.0-顺便说一句:
.TextBoxFor
有一个重载,您可以在其中提供格式字符串-您应该使用此选项,我在使用此选项时从未遇到过任何问题-您对“我的值丢失”的意思是什么?@UğurAldanmaz它返回0。您能给出一个示例输入值,以便在格式化时返回零吗?@CarstenKönig,您有使用该重载的示例吗?