1

TextBoxForのhtmlヘルパーを使用してプロパティを緊密にバインドしたいのですが、それができません。Textboxを使用してバインドしただけですが、httpPostのtextboxにデータを割り当てたいです。

以下は、単純な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 に答える