2016-07-07 8 views
0

MVC3/RazorからMVC5/Razorにアップグレードしました。MVC3からMVC5で表示テンプレートの動作が変更されましたか?

私の表示テンプレートがモデル値でもう読み込まれていないことが判明しました。

テンプレートは "MyTemplateに" と呼ばれている:私は、デバッガを経由して、それに従うとき、nullを返している

@Html.DisplayFor(modelItem => item.mydecimalvalue, "MyTemplate") 

モデル:

@model System.Object 
@{ 
if (Model !=null) 
{ 
    string.Format("{0:0.00}", Model); 
} 
else 
{ 
    @:-  
} 

} 

によって呼び出されています。これはMVC3で正常に動作していました

これについての助けがあれば幸いです。

EDIT 1

string.Format("{0:0.00}", Model); 

は次のようになります。

@(string.Format("{0:0.00}", Model)); 

それが機能するために使用されるように、MVC4または5と、この周りの変更が行われている必要があります。

+1

あなたが何を求めているのかは不明です。あなたのモデルタイプは 'System.Object'です。どうして? 10進数の 'item.mydecimalvalue'はどのような型ですか?テンプレートでnullをチェックしているのはなぜですか(if(Model!= null))? 「nullを返す」とは何ですか? 'Model.ToString()'? 'string.Format'行とは何ですか?なぜコメントされますか?詳細を記入してください。ありがとう。 – NightOwl888

+0

お返事ありがとうございます。入力の型は10進数ですが、値がNULLの場合もありますが、その場合は " - "を表示します。値があった場合は、小数点以下2桁まで小数点以下を書式化したいと思います。コードを明確にするように修正しました。 – SamJolly

+0

"item.mydecimalvalue"は呼び出し側のビューに値を持ちます。私はこれをデバッガでチェックし、それを書いています。ただし、値はテンプレート内でnullに変換されます。 – SamJolly

答えて

1

Html.FormatValueを使用すると、それはRazorのString.Formatよりも優先する方法として機能します。

@model System.Object 
@{ 
    if (Model != null) 
    { 
     @Html.FormatValue(Model, "0.00") 
    } 
    else 
    { 
     @:- 
    } 

} 

参考:

using string.Format in MVC Razor view page

あなたが発見したとして、それはString.Formatを使用する可能ですが、それが原因で必要な奇妙な(非直感的な)構文のPITAです。そのため、Html.Format(かすかな拡張子)はより洗練され、より読みやすいIMOです。

+0

ありがとう、多くの感謝.. – SamJolly

関連する問題