1

カミソリ ビューでデータセットをループしています。MVC と Razor は初めてです。ASP.net の背景。

    @foreach (System.Data.DataRow _row in Model.Rows)
{
        <tr>
            <td>@_row["FileNameShort"].ToString()</td>
            <td>@_row["FileSize"]</td>
            <td><a href="DocViewer.aspx?rowid=@_row["ID"].ToString()">View</a></td>
        </tr>
}

ファイルサイズを MB、GB、KB 単位にする必要があります。その単位はバイトです。ビューに関数を配置してフォーマットしました。どこかで見つけたものですが、問題なく動作するはずです。

@functions {

    List<string> suffixes = new List<string> { " B", " KB", " MB", " GB", " TB", " PB" };
    string Numeric2Bytes(int number)
    {
        for (int i = 0; i < suffixes.Count; i++)
        {
            int temp = number / (int)Math.Pow(1024, i + 1);
            if (temp == 0)
                return (number / (int)Math.Pow(1024, i)) + suffixes[i];
        }
        return number.ToString();
    }

    string test(int number)
    {

        return number.ToString();
    }
}

私がこれを行うだけなら:

 <td>Numeric2Bytes(@_row["FileSize"])</td>

データセット内のINTであっても、無効な引数であると不平を言います。

私がする必要があることをするための最良の方法は何ですか?

4

3 に答える 3

1

それはわかっていますがintDataRow.Itemプロパティが返されますobject。キャストする必要があります。

<td>Numeric2Bytes((int)@_row["FileSize"])</td>

于 2013-08-30T20:03:52.230 に答える
0

カスタム HTML ヘルパーを使用します。次のリンクを参照してください。

http://www.asp.net/mvc/tutorials/older-versions/views/creating-custom-html-helpers-cs

于 2013-08-30T20:04:42.107 に答える