使用用户控件中的函数(razor 语法)

Using function from user control (razor syntax)

大家好,我因为尝试访问在用户控件中创建的功能而被困了一个星期。 我使用剃刀语法 (webmatrix)

我有 2 个 ascx 文件

hoop.ascx:

<%@ Control Language="VB" ClassName="basic" %>  

<script runat="server">

    Function Random(from, to)
            Randomize
            Random = 1 + INT(RND(from)*to)
        End Function
</script>

webform.aspx:

<%@ Page Language="VB" Debug="true" aspcompat=true %>
<%@ Register TagPrefix="wikibooks" TagName="basic" Src="hoop.ascx" %>
<%@ Register TagPrefix="connectie" TagName="con" Src="connectie.ascx" %>

<html>
<head>
<title>Testing it</title>
</head>
<body>

<wikibooks:basic runat="server"/>
<connectie:con runat="server" />

<%
   Response.Write(Random(1, 1000))
%>

</body>
</html>

谁能帮我解决这个问题(我该如何处理)

当我这样做时,出现错误:

[BC30108] 'random' is a type and cannot be used as an expression

我已经有一段时间了,根据需要改进:

  1. 强烈建议您重命名自己的 Functions - 使用 built-in 名称以外的名称 (.Net)。所以在你的 hoop.ascx UserControl:

    Public Shared Function RandomGen(fromValue As Integer, toValue As Integer)
    
       'Random is a built-in class in .net
        Dim rnd As New Random()
        RandomGen = rnd.Next(fromValue, toValue)
    
    End Function
    
  2. 您的 hoop.ascx UserControl ClassNamebasic 所声明的:

    <%@ Control Language="VB" ClassName="basic" %>

    因此从中调用您的 (Shared) 函数 in webform.aspx:

    <%=basic.RandomGen(100, 200)%>

顺便说一句,这不是 razor 语法 - 这是 WebForms 语法。 Razor 将是 vbhtmlcshtml(对于 c#)。

第...