コントローラーの 1 つに次のコード ブロックがあります。このコードは、ビューが消費するカルチャに基づいて特定の方法でフォーマットされた 2 つの日付文字列を返します。
string dateStringForSystem = "";
string dateStringForActiveMetrics = "";
string cultureConfigKey = System.Configuration.ConfigurationManager.AppSettings["InstanceCulture"];
DateTime? lastEntryDateForSystem = null;
DateTime? lastEntryDateForActiveMetrics = null;
DataSet dSet = DataHelper.Measurements_GetLastMeasurement(userSession.UserIDNative);
foreach (DataRow dr in dSet.Tables[0].Rows)
{
lastEntryDateForSystem = (DateTime?)dr["LastMeasurementWhen"];
lastEntryDateForActiveMetrics = (DateTime?)dr["LastMeasurementForActiveGoalsWhen"];
}
// Format viewdata dates based on culture and convert it to string
if (cultureConfigKey == "en" )
{
ViewData["DateStringForSystem"] = dateStringForSystem = String.Format("{0:MM/dd/yy}", lastEntryDateForSystem);
ViewData["DateStringForActiveMetrics"] = dateStringForActiveMetrics = String.Format("{0:MM/dd/yy}", lastEntryDateForActiveMetrics);
}
else
{
ViewData["DateStringForSystem"] = dateStringForSystem = String.Format("{0:dd/MM/yy}", lastEntryDateForSystem);
ViewData["DateStringForActiveMetrics"] = dateStringForActiveMetrics = String.Format("{0:dd/MM/yy}", lastEntryDateForActiveMetrics);
}
ビューコードでは、ビューデータをそのまま保存して使用します。しかし、文字列が null を返すと、エラーが発生します。dateTime を文字列に変換しても null は文字列として返されないのですか?
var dateStringForSystem = ViewData["DateStringForSystem"];
var dateStringForActiveMetrics = ViewData["DateStringForActiveMetrics"];
@if (dateStringForSystem == "")
{
// some html
}
else if (dateStringForActiveMetrics != "")
{
<span>@dateStringForActiveMetrics</span>
}
C# はまだかなり新しいので、このコードをクリーンアップするための推奨事項も大歓迎です :) ありがとう!