私は MVC3 を初めて使用し、優れたプログラミング プラクティスを習得しようとしています。DateTime をどのようにフォーマットするのに苦労しましたか? 日付の元のクラスに関連付けられた明示的な ModelName.cs ファイルを持たない MVC3 プロジェクトに表示されていました。
データベースは既に配置されており、モデルを取得する .edmx (私たちのものは Pooling.edmx と呼ばれます) を使用します。私は明らかに、この広く受け入れられているソリューションに合わせてデザイナー ファイルを編集したくありませんでした: Date only from TextBoxFor()。
次に、ここで見つけた別の解決策を試しました: Using Html.TextBoxFor with class and custom property (MVC)
以下を使用します。
@Html.TextBoxFor(m => m.Name, new { data_bind="value: Name", @class = "title width-7" })
カスタム属性の使用、クラス名の追加、値の設定を一度に行うことができたので、これは機能しました。
私はこれを変換しました:
@Html.TextBoxFor(m => Model.PrePoolOwner.OglDateEffective, new Dictionary<string, object> { { "class", "check-dirty input-small datePicker" }, { "data-original-value", @Model.PrePoolOwner.OglDateEffective } })
これに(これは本当に醜いようです...そして私に質問につながります):
@Html.TextBoxFor(m => Model.PrePoolOwner.OglDateEffective, new { data_original_value = Model.PrePoolOwner.OglDateEffective.HasValue ? Model.PrePoolOwner.OglDateEffective.Value.ToString("MM/dd/yyyy") : null, @class = "datePicker check-dirty", @Value = Model.PrePoolOwner.OglDateEffective.HasValue ? Model.PrePoolOwner.OglDateEffective.Value.ToString("MM/dd/yyyy") : null })
情報を表示するには、これらの他の方法 (アンダースコアがダッシュに変換されるなど) を見つけて使用する方が良いですか、それとも ModelName.cs ファイルを使用してモデル レベルでの表示方法を変更する必要がありますか?
なんらかの理由で、私たちのデータベースをマッピングする巨大な Pooling.edmx ファイルを持っていると、Web サイトが進化するにつれてデータにアクセス/提示/変更する方法が制限されているように感じます。
上記の Model.PrePoolOwner.OglDateEffective によって呼び出される「PrePoolOwner」オブジェクトを取得するために、次のことを行う PrePoolOwnerRow.cs ファイルがあります。
namespace OCC_Tracker.Models
{
public class PrePoolOwnerRow
{
public bool Dirty { get; set; }
public bool Delete { get; set; }
public PrePoolOwner PrePoolOwner { get; set; }
public PrePoolOwnerRow(PrePoolOwner owner)
{
this.Dirty = false;
this.Delete = false;
this.PrePoolOwner = owner;
}
public PrePoolOwnerRow()
{ }
}
}
次に、.cshtml ファイルの先頭で呼び出します
@model OCC_Tracker.Models.PrePoolOwnerRow