【问题标题】:Convert ActionMailer.Mvc from C# to VB将 ActionMailer.Mvc 从 C# 转换为 VB
【发布时间】:2012-08-15 18:12:12
【问题描述】:

原始文档存在here

我已经转换了控制器动作:

Imports ActionMailer.Net.Mvc

    Public Class EmailController
        Inherits MailerBase

        Public Function VerificationEmail(ByVal model As RegisterModel) As EmailResult

            [To].Add(model.Email)
            From = "me@my.org"
            Subject = "Thanks for registering with us!"
            Return Email("VerificationModel", model)

        End Function

    End Class

还有,观点(EmailVerification.html.vbhtml):

@modelType GemcoBlog.RegisterModel

@Code
    Layout = Nothing
End code

Welcome to My Cool Site, @Model.UserName

We need you to verify your email.  Click this nifty link to get verified!

@Html.ActionLink("Verify", "Account", New With {.code = Model.Email})

Thanks!

但是,如何将此 C# 代码转换为从我的 Register 方法调用函数到 VB?

new MailController().VerificationEmail(newUser).Deliver();

我在互联网上没有找到任何描述如何在 VB 中执行此操作的内容,所以这篇文章可能对那些寻找的人有所帮助。

附带说明:有人可以向我解释一下这个语法[To].Add(model.Email)吗?我以前没见过。谢谢。

【问题讨论】:

  • 括号强制编译器将它们之间的文本识别为代码中的变量或类型名称,而不是 VB 关键字。在这种情况下,单词“To”是用于 for 循环的 VB 关键字(例如 For x = 1 To 10。因此,除非您使用括号对其进行转义,否则编译器会认为这是对 To 关键字的无效使用。
  • 在 VB.NET 中它的语法是一样的,除了“;”最后(它只是简单的方法链接)。您的最后一个问题:这是因为To 不能是标识符(我相信这是一些保留字),并且通过在它周围添加括号([To]),您可以使用To 作为标识符。

标签: c# asp.net-mvc vb.net asp.net-mvc-3


【解决方案1】:
Dim controller = New MailController()
Dim email = controller.VerificationEmail(newUser)
email.Deliver()

或者如果您更喜欢一种衬垫:

Call New MailController().VerificationEmail(newUser).Deliver()

附带说明:有人可以向我解释一下这种语法吗 [To].Add(model.Email)?我以前没见过。谢谢。

To 是 VB 中的保留字。将其括在方括号中可确保您不会与此保留关键字发生冲突。

C# 中的等价词是 @ 关键字:

int @int = 123;

【讨论】:

  • 感谢您的回答。当我写 new MailController().VerificationEmail(newUser).Deliver() 时,它给了我一个关于“新”的语法错误。
  • 字面意思是“语法错误”。它没有提供进一步的信息。它在 Visual Studio 中有一条蓝色下划线。
  • @user1477388 这是New 不是new。资本N
  • @jgauffin,VB.NET 不区分大小写。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多