Возможно, вы захотите изучить методы расширения HTML. Вы можете создать его так:
Public Module FileSizeExtension
<Extension()> _
Public Shared Function FileSizeAsString(ByVal helper AS HtmlHelper,
ByVal byteCount As Integer) As String
Select Case ByteCount
Case Is < (2 ^ 10)
Return ByteCount.ToString("N0") + "B"
Case (2 ^ 10) To ((2 ^ 20) - 1)
Return (ByteCount / (2 ^ 10)).ToString("N0") + "KB"
Case (2 ^ 20) To ((2 ^ 30) - 1)
Return (ByteCount / (2 ^ 20)).ToString("N0") + "MB"
Case (2 ^ 30) To Integer.MaxValue
Return (ByteCount / (2 ^ 30)).ToString("N0") + "GB"
End Select
End Function
End Module
Теперь вы можете использовать это в своих представлениях, используя <%= Html.FileSizeAsString(byteCount) %>
Несмотря на то, что вы можете получить доступ к контроллеру View с помощью ViewContext.Controller
, вам нужно привести это свойство к тому типу, который вы ожидаете. Затем вы можете вызвать метод контроллера, если хотите. Многим людям не нравится этот подход, потому что он связывает ваше представление с конкретным контроллером.
Ради аргумента должно работать следующее:
<% Dim homeController AS HomeController =
TryCast(ViewContext.Controller, HomeController) %>
<ul>
<% For Each d As Document In Model.Attachments%>
<li>
<a href="<%=Url.RouteUrl("Download", New With {.id = a.Id}) %>">
<%=d.FileName %> (<%= homeController.FileSizeString(d.FileSize) %> bytes)
</a>
</li>
<% Next %>
</ul>