【问题标题】:how to bind model property to html helper textboxfor in mvc3如何在 mvc3 中将模型属性绑定到 html 帮助器 textboxfor
【发布时间】:2012-05-16 21:26:53
【问题描述】:

我想使用 TextBoxFor 的 html 帮助程序紧密绑定我的属性,但我不能这样做,我只是使用 Textbox 进行绑定,但我想将数据分配给 httpPost 上的文本框

下面是我如何使用简单的 HtmlHelper 文本框完成的

<%: Html.TextBox("RenewalDate", (string.Format("{0:yyyy/MM/dd}", Model.RenewalDate)), new { id = "txtRenewalDate", maxlength = 20, tabindex = 3, @class = "date" })%>

我不想使用 FormCollection,这就是为什么我想与 TextBoxFor 紧密绑定,以便在 httpPost 上我的模型具有分配给 Model.RenewalDate 的值

请帮忙....

【问题讨论】:

  • 您在使用 TextBoxFor 时遇到什么问题?
  • 问题是我想以 yyyy/MM/dd 格式显示日期时间

标签: asp.net-mvc-3 c#-4.0


【解决方案1】:

使用编辑器模板,更简单:

<%= Html.EditorFor(x => x.RenewalDate) %>

您可以使用 DisplayFormat 属性装饰您的视图模型属性以指定所需的格式:

[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
public DateTime RenewalDate { get; set; }

然后您的 POST 控制器操作会将视图模型作为操作参数。

[HttpPost]
public ActionResult SomeAction(MyViewModel model)
{
    ...
}

为了将 HTML 属性(例如 class、tabindex 和 maxlength)应用到此编辑器模板,您可以编写一个自定义元数据提供程序,如 following article 所示。

此外,由于日期使用yyyy/MM/dd,因此默认模型绑定器可能无法将值解析回来,因为默认模型绑定器使用当前区域性设置。要解决此问题,您可以编写一个自定义模型绑定器,正如我在 this thread 中展示的那样。

【讨论】:

  • 嗨,它已经解决了我显示日期格式的问题,但是现在....我已经将 datepicker 与此文本框绑定,但现在没有显示....
  • 让我简要介绍一下,以便每个人都能理解我已经使用上述方法解决了日期格式的问题,它工作正常,但我在我的 Editorfor 上附加了一个日期选择器,它没有显示在点击编辑器... m.RenewalDate, new { id = "txtRenewalDate", maxlength = 20, tabindex = 3, @class= "date" })%> 下面是我的编辑器代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多