c# - ASP.NET MVC 5 在回发时修剪字符串?

标签 c# asp.net-mvc

在回发期间(假设验证错误)我的文本输入字段不显示修剪值,即使我在我的模型中指定它们如此(参见下面的简单模型)。这些值确实在我的 Controller 下被修剪了,debug.writeline() 显示了它们,但这并没有反射(reflect)在 View 中。

如何在回发后让修剪反射(reflect)在我的 View 中(在输入字段内)?

简单模型:

private string _name;

public string Name {
    get { return this._name; }
    set { this._name = (value == null) ? "" : value.Trim(); }
}

简单的 Controller :

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);
}

简单 View :

@using(Html.BeginForm()) {
    @Html.EditorFor(m => m.Name);   // not trimmed!
    @Html.ValidationMessageFor(m => m.Name);
}

更新: 在我的简单 Controller HttpPost 方法中,我将我的模型传递给 View “return View(model)”。在我看来,我可以简单地通过执行“Model.Name”或“@Model.Name”来引用该对象,当我这样做时,我看到它被修剪了。但是问题仍然存在,因为我不明白如何在@Html.LabelFor、@Html.EditorFor 助手下引用传入的对象(模型)?我确实尝试过以一些创造性的方式使用@Html.Label 和@Html.Editor,但这也没有用。如果我理解辅助对象,那么 @Html.EditorFor(m => m.Name) 实际上并没有引用传入的对象(模型),而是创建了一个新的引用。

在 View 中:

@{
    Layout = null;

    if (Model != null) {
        Debug.WriteLine("From View: _" + Model.Name + "_");  // trimmed !
    }
}

最佳答案

在 ASP.NET 上发布了相同的问题并收到了@ignatandrei 的回复(标记为回答)。简而言之,问题与@Html.Helpers 如何处理传入数据有关。 @ignatandrei 解释说:

"The data comes to MVC from POST --> GET --> MODEL (in this order), for your problem, [use] ModelState.Remove("Name") [in the Controller]."

http://forums.asp.net/p/2002010/5754373.aspx?ASP+NET+MVC+5+Trim+string+on+postback+

通过进一步研究,我发现以下文章很好地解释了 ModelState(以及其他)、Html.Helpers 和 Views(以及它们之间的关系)。

http://www.gxclarke.org/2010/05/consumption-of-data-in-mvc2-views.html?m=1

更新: 这是一篇完美解释问题(和可能的解决方案)的文章: http://weblog.west-wind.com/posts/2012/Apr/20/ASPNET-MVC-Postbacks-and-HtmlHelper-Controls-ignoring-Model-Changes

关于c# - ASP.NET MVC 5 在回发时修剪字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25260571/

相关文章:

asp.net-mvc - 发送kendoGrid参数(过滤器,排序)以进行文件下载

asp.net-mvc - MVC 4 是否有内置的站点地图解决方案?

c# - Linq to SQL、SQL Server 2008 和优化

c# - 当字段中存在逗号和括号时如何解析逗号分隔的字符串

c# - EmguCV - 保存图像时如何指定 jpeg 质量?

c# - ASP.NET MVC 4 一些路由不工作

html - 页面底部的小线

asp.net - 自定义验证 : get the property name from validationContext

c# - 使用 WebClient 将数组作为消息正文的一部分传递以进行发布操作

c# - UDP 客户端异步不关闭套接字