3
@Html.TextBoxFor(x => x.ActiveDevice.LastUseDate, new { @readonly = "readonly" })

日付テキストボックスを読み取り専用として表示しますが、これは問題ありませんが、日付と時刻の両方が表示されます。日付のみが必要なため、iv .ToShortTimeString() を次のように使用しました。

 @Html.TextBoxFor(x => x.ActiveDevice.LastUseDate.ToShortTimeString(), new { @readonly = "readonly" })

エラーが表示されます:

テンプレートは、フィールド アクセス、プロパティ アクセス、単一次元の配列インデックス、または単一パラメーターのカスタム インデクサー式でのみ使用できます。

誰でもこれを解決する方法を知っていますか? ありがとう

4

3 に答える 3

2

HtmlAttributes で書式設定された日付を挿入できます。

@Html.TextBoxFor(x => x.ActiveDevice.LastUseDate, new { @readonly = "readonly", @Value = Model.ActiveDevice.LastUseDate.ToShortTimeString() })
于 2013-07-30T11:47:44.917 に答える
2

これはTextBoxFor、モデル バインダーがデータをシリアル化できるように、(他のテンプレート拡張機能と同様に) モデル プロパティを参照する式が必要なために発生します。

式が有効であることを確認する必要があります。少なくとも、モデル バインディングの目的で意味のある文字列に変換できるもので終わる必要があります。

( で関連するコードを確認してくださいModelMetadata.FromLambdaExpression)


これを解決するにはいくつかの方法があります。1 つはDisplayFormatモデルに属性を追加することです。

[DataType(DataType.Date)]  //try this as well? maybe Orchard intervenes into rendering...
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime LastUseDate { get; set; }

そして、いつものようにプロパティを使用するのはビューです:

@Html.TextBoxFor(x => x.ActiveDevice.LastUseDate, new { @readonly = "readonly" })
于 2013-07-30T11:49:04.813 に答える
0

andreister の助けのおかげで、問題を解決できました。それを「textBox」に変更し、ランバを削除し、テキストボックスの名前を引用符で囲んで広告を追加します。

@Html.TextBox("LastUseDate", Model.ActiveDevice.LastUseDate.ToShortDateString(), new { @readonly = "readonly" })
于 2013-07-30T12:52:16.500 に答える