【问题标题】:Html.CheckBoxFor in VB Razor ViewVB Razor 视图中的 Html.CheckBoxFor
【发布时间】:2011-07-05 09:08:31
【问题描述】:

我在 Razor 视图中有这个 C# 代码:

@(Html.CheckBoxFor<RazorSamplesWeb.Models.SamplesModel>(i => i.IsActive))

我试着把它翻译成这样:

@Code Html.CheckBoxFor(Of RazorSamplesWeb.Models.SamplesModel)(Function(i) i.IsActive)End Code

但它在抱怨。为什么,正确的说法是什么?

谢谢。

【问题讨论】:

    标签: asp.net asp.net-mvc vb.net razor asp.net-mvc-3


    【解决方案1】:
    @(Html.CheckBoxFor<RazorSamplesWeb.Models.SamplesModel>(i => i.IsActive))
    

    太长,太丑了,相当于:

    @Html.CheckBoxFor(i => i.IsActive)
    

    在 VB.NET 中可能如下所示:

    @Html.CheckBoxFor(Function(i) i.IsActive)
    

    您所指的@Code 可用于不返回任何值(IHtmlString)但直接写入输出缓冲区的助手。示例:

    @Code Html.RenderAction("Foo") End Code
    

    【讨论】:

    • 是的,但同样,我们假设我需要通用参数,用于演示目的。提供模型类型时,出现错误。没有对我来说工作正常,但应该可以按预期工作,但不是。
    • 虽然选项 strict 开启,但它不喜欢 Function (x) x.ExpressionTarget 中的推断类型
    【解决方案2】:

    @Code 块用于独立语句;它们相当于 C# 中的 @{ ... }

    您应该使用原始的@ 块。

    您的 C# 代码使用括号强制解析器读取类似于 HTML 的 &lt;...&gt; 部分。
    VB.Net 没有模棱两可的泛型语法,所以你不需要它。

    【讨论】:

    • 尝试将其包装在 () 中。此外,您不需要首先指定泛型参数。
    【解决方案3】:

    如果你没有定义@ModelType,正确的语句是

     @Html.CheckBoxFor(Function(m As RazorSamplesWeb.Models.SamplesModel) m.IsActive))
    

    您将泛型类型显式设置为 RazorSamplesWeb.Models.SamplesModel。

    【讨论】:

      猜你喜欢
      • 2017-07-18
      • 2014-08-18
      • 2011-07-05
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多