【问题标题】:Parse and modify HTML from MVC Model using jQuery / Javascript使用 jQuery / Javascript 从 MVC 模型中解析和修改 HTML
【发布时间】:2014-05-06 05:58:55
【问题描述】:

这需要在客户端完成(请相信我,我会保存解释)。

我有一个在循环中呈现部分视图的剃刀视图。 viewModel 只是另一个类。

@{
  foreach (ObjectName objInstance in Model.Collection)
  {
    @Html.Parial(partialViewName, viewModel)
  }
}

而局部视图最终会从 viewModel 属性呈现 HTML(这显然会发生很多次,因为此局部视图是在循环中呈现的)。

@Html.Raw(Model.GetPropertyTextValue())

GetPropertyTextValue() 中的 HTML 可能如下所示:

<ul>\r\n<li>2,3,6-Tri-O-methyl-D-glucose (<a target=\"_blank\" href=\"http://www.blahblah.com/pubmed/12345?name=value\">1</a>) , 2,3,6-tri-O-methyl-D-mannose, 3-O- blah blah</ul>

我需要获取 Model.GetPropertyTextValue 中的值并对其进行解析,用不同的链接替换整个 URL(到 blahblah.com)(但保留任何数字,如“12345”)。此类 URL 可能在字符串中出现多次。

我相信这应该使用 jQuery/Javascript 来完成,但我不确定如何处理它。任何人都可以请建议如何去做吗?谢谢。

【问题讨论】:

    标签: c# javascript jquery asp.net-mvc razor


    【解决方案1】:

    如果您绝对必须在客户端做,您可以尝试这样的事情。首先用可识别的 div 包装您生成的内容,以便您只能在该容器中操作:

    <div id="items-to-parse">
        @{
          foreach (ObjectName objInstance in Model.Collection)
          {
            @Html.Partial(partialViewName, viewModel)
          }
        }
    </div>
    

    然后创建一个简单的脚本来搜索该容器中的所有链接并更改它们的 href 属性:

        $('#items-to-parse a').each(function() {
            $(this).attr('href', 'http://the.new.url');
        });
    

    【讨论】:

      猜你喜欢
      • 2013-01-28
      • 2013-02-04
      • 1970-01-01
      • 2012-07-19
      • 2017-03-02
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2010-11-24
      相关资源
      最近更新 更多