1

我想使用 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

请帮忙....

4

1 回答 1

2

使用编辑器模板,它更容易:

<%= 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)
{
    ...
}

为了将 class、tabindex 和 maxlength 等 HTML 属性应用于此编辑器模板,您可以编写自定义元数据提供程序,如下文所示。

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

于 2012-05-16T13:26:53.987 回答