1

私はこのようなものを書きました:

var _views = (@Model.Views == 1 ? "view" : "views");
var _comments = (@Model.Comments == 1 ? "comment" : "comments");

if(@Model.Views > 0)
{
   if (@Model.Comments > 0)
   {
       @String.Format("{0:n0} {1}, {2:n0} {3}", @Model.Views, _views, @Model.Comments, _comments);
   }
   else
   {
       @String.Format("{0:n0} {1}", @Model.Views, _views);
   }
}
else if (@Model.Comments > 0)
{
   @String.Format("{0:n0} {1}", @Model.Comments, _comments);
}

それは実際に機能します。

動画の視聴回数とコメント数が表示されます(例:http ://www.voiceofconscience.org/Video/2 )

私がこの低品質の方法で解決した単一/複数の問題がありました。

「いいスタイル」とはどういう風に見えるのか気になりました

マリウスに挨拶

4

3 に答える 3

2

これはややコンパクトで、2つ以上のカウントに一般化されます。

var items = new List<string>();
if (Model.Views > 0)
    items.Add(string.Format("{0:n0} {1}", Model.Views, _views));
if (Model.Comments > 0)
    items.Add(string.Format("{0:n0} {1}", Model.Comments, _comments));
var result = ", ".Join(items);

(注:すべての@sは、ASP.NET MVCビューを作成しているように見えますが、それらをどのように配置したかがよくわかりません@。必要に応じてsを挿入してください。)

于 2012-08-21T16:17:52.663 に答える
2
  • @のプレフィックスが付いた変数は、通常は避ける必要があります。これらの変数を使用すると、コードが読みにくくなります。
  • アンダースコアプレフィックスは、一般的にプライベートインスタンス変数に使用されます。ここで使用すると混乱する可能性があります。

複数形については、をチェックしてくださいSystem.Data.Entity.Design.PluralizationServices.PluralizationService

http://msdn.microsoft.com/en-us/library/system.data.entity.design.pluralizationservices.pluralizationservice.aspx

于 2012-08-21T16:18:47.030 に答える
1

if-elseの破片にぶつかる代わりに、結果の文字列を蓄積すると見栄えが良くなると思います。このようなSmth:

StringBuilder sb = new StringBuilder();
if(@Model.Views > 0)
  sb.AppendFormat("{0:n0} {1}",@Model.Views, _views);
if(@Model.Comments> 0)
  sb.AppendFormat("{0:n0} {1}",@Model.Comments, _comments);
于 2012-08-21T16:20:10.180 に答える