【问题标题】:No overload for method 'Write' takes 0 arguments in MVC3 Razor Format,'Write' 方法没有重载采用 MVC3 Razor 格式的 0 个参数,
【发布时间】:2011-01-31 16:43:32
【问题描述】:

在我的项目<% if (Model.Folders != null){}%> 工作正常,当我将此代码转换为剃刀格式时,我在我的

Html.RenderPartial(ViewData["abc"] as string, Model);

我正在使用动态视图

【问题讨论】:

  • 我在这一行也遇到了这个错误:@{isAlt = !isAlt;}。这很奇怪,我只想切换布尔变量。以前我已经声明它@{var isAlt = true;} 并在中间某处使用class="@(isAlt? "alt": string.Empty)",它用于设置表格中交替行的样式。一定是有原因的……

标签: asp.net-mvc-3 razor


【解决方案1】:

在 Razor 中,if 测试应该是这样的:

@if (Model.Folders != null)
{
    <div>@Model.Folders</div>
}

RenderPartial 是这样的:

@{Html.RenderPartial(ViewData["abc"] as string, Model);}

或者你也可以使用Partial 方法,它等效且更短:

@Html.Partial(ViewData["abc"] as string, Model)

【讨论】:

  • 当我使用“@Html.Partial(ViewData["abc"] as string, Model)”时,我收到以下错误“'System.Web.Mvc.HtmlHelper'没有名为“Partial”的适用方法,但似乎具有该名称的扩展方法。扩展方法无法动态调度。考虑强制转换动态参数或调用扩展方法而不使用扩展方法语法。"
  • @amir,你的视图不是强类型的,所以你不能使用Model 变量。确保您的视图被强类型化为某些模型类型:@model AppName.Models.SomeModel 在您的视图顶部。
  • 它的强类型,我使用了“@model AppName.Models.SomeModel”
  • 您是否将控制器操作中的某些模型传递给视图?
  • 是的,我有 IQueryable 列表供控制器从假存储库中查看
【解决方案2】:

我遇到了同样的问题,我通过如下包装我的 Html.RenderPartial 解决了它:

     <text>
         @{
           Html.RenderPartial(ViewData["abc"] as string, Model);
          }
     </text>

<div>
@{
Html.RenderPartial(ViewData["abc"] as string, Model);
}
</div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多