【发布时间】:2014-10-05 07:15:20
【问题描述】:
在回发期间(假设验证错误)我的文本输入字段不显示修剪值,即使我在我的模型中指定它们是这样的(参见下面的简单模型)。这些值确实在我的控制器下被修剪,debug.writeline() 显示它们,但这并没有反映在视图中。
在回发后,如何让修剪反映在我的视图中(在输入字段中)?
简单模型:
private string _name;
public string Name {
get { return this._name; }
set { this._name = (value == null) ? "" : value.Trim(); }
}
简单的控制器:
public ActionResult Index() {
return View();
}
[HttpPost]
public ActionResult Index([Bind(Include="Name,City,State")] Model model) {
Debug.WriteLine("Name: " + model.Name); // trimmed!
return View(model);
}
简单视图:
@using(Html.BeginForm()) {
@Html.EditorFor(m => m.Name); // not trimmed!
@Html.ValidationMessageFor(m => m.Name);
}
更新: 在我的简单控制器 HttpPost 方法中,我将模型传递给视图“返回视图(模型)”。在我看来,我可以简单地通过执行“Model.Name”或“@Model.Name”来引用该对象,当我这样做时,我看到它被修剪了。然而问题仍然存在,因为我不明白如何在@Html.LabelFor、@Html.EditorFor 助手下引用传入的对象(模型)?我确实尝试以一些创造性的方式使用@Html.Label 和@Html.Editor,但这也不起作用。如果我理解辅助对象,那么 @Html.EditorFor(m => m.Name) 实际上并没有引用传入的对象(模型),而是创建了对它的新引用。
在视图中:
@{
Layout = null;
if (Model != null) {
Debug.WriteLine("From View: _" + Model.Name + "_"); // trimmed !
}
}
【问题讨论】:
-
你应该把
Trim()放在一个getter中? -
你能显示
Get&Post控制器方法吗? -
已编辑,添加了简单控制器。
-
试试下面的答案
-
试试这行
Debug.WriteLine("Name:_" + model.Name + "_");确保没有空格。
标签: c# asp.net-mvc