【问题标题】:ASP.NET MVC3 Razor Concatenation With Html.Helpers And JQuery TemplatesASP.NET MVC3 Razor 连接与 Html.Helpers 和 JQuery 模板
【发布时间】:2012-01-03 15:14:27
【问题描述】:

所以基本上我想要完成的是在我的 JQuery 模板中我有条件地添加 html 帮助器控件,似乎给我带来麻烦的是正确的剃刀语法使用$value.SomeUniqueId 的客户端值作为此服务器端生成的控件的 ID...

如果我像使用样式一样使用静态 id 作为文字,它将起作用;但我想使用我在 {{each items}}...{{/each}} 块中输入 JQuery 模板的值

例如:

{{each items}}
  {{if $value.IsAllowed }}                
    @Html.TextArea("txtSomeValue", new {style="width:80%", ID=$value.SomeUniqueId})
  {{/if}}
{{/each}}

违规行是:@Html.TextArea("txtSomeValue", new {style="width:80%", ID=$value.SomeUniqueId})

如果我这样做:@Html.TextArea("txtSomeValue", new {style="width:80%", ID="someID"})... 它有效...

连接似乎缺少一些明显的东西......

提前致谢。

【问题讨论】:

  • 您正在混合服务器端和客户端代码。
  • ID的值必须是c#表达式。
  • 这就是我想要做的......在剃须刀之前这不是问题,我在连接服务器和客户端值时没有问题......似乎我被困在服务器端带有剃刀的@之后的值或静态值...我正在寻找解决方法...

标签: jquery asp.net-mvc templates razor html-helper


【解决方案1】:

我认为您可能需要手动设置此文本区域 — 不使用 Razor:

<textarea name="txtSomeValue" style="width:80%;">${value.SomeUniqueId}</textarea>  

编辑

抱歉,您希望 value.SomeUniqueId 成为 textarea 的 id。这可能工作

<textarea name="txtSomeValue" id="${value.SomeUniqueId}" style="width:80%;"></textarea>  

【讨论】:

  • 是的,我发现以前也可以,但是我需要一个唯一标识符来有条件地动态添加控件...
  • @user1011144 - 为什么需要唯一标识符?你可以在 html 元素上去掉 id
  • 为了举例……在文本框的情况下,可以有 n 个文本框,每个文本框都有唯一的、不同的输入值;验证成功后,我需要将所有内容发回。
  • 所以您认为我不能使用剃刀 html.helper 在动态呈现时通过 jquery/json 提供唯一标识符吗?我在 jquery 模板中使用 razor html.helper 没有问题,但我似乎无法像之前 razor 那样混合和匹配服务器端和客户端代码...
  • @user1011144 - 对,您可以使用它,但服务器端剃须刀方法不会接受客户端模板值。
【解决方案2】:

您应该将值作为字符串传递:

{{each items}}
  {{if $value.IsAllowed }}                
    @Html.TextArea("txtSomeValue", new {style="width:80%", ID="$value.SomeUniqueId"})
  {{/if}}
{{/each}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多