MVC4 / JS / AJAX:Html.Raw输出替换视图HTML中的href标记的内容

时间:2014-03-06 21:52:27

标签: javascript html ajax asp.net-mvc-4

我的项目中有一项功能,即发送到某个地址的电子邮件会被解析,附件会保存到网络,元数据会保存到数据库中。当加载完成商品的详细信息时,其序列号与解析后的电子邮件中包含的序列号相匹配,项目会生成与序列相关联的注释,并生成包含指向网络上保存的文件附件的链接的注释文本。这样做的目的是,现场成品的图像和PDF可以由技术人员发送给我们,然后通过我们的门户网站上的附加说明自动上传和访问。

我遇到的问题是,在生成注释后,当查看注释的详细信息时,HTML会将链接内容文本移到标记之外,以便显示链接内容/字符串但是不可点击。注释数据库中的文本链接文本包含在链接到文件的标记中。

注释详细信息将作为模式弹出窗口内的部分视图加载。

在使用Html.Raw在视图中显示时,我无法弄清楚数据库注释文本的重新排列方式或原因。

模态部分视图:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<TeamPortal.Models.SpaNoteDetailsModel>" %>

<div class="box" style="padding:6px;">
        <br /><br />
        <div id="SpaNoteDetailContainer">
            <div class="SpaNoteInfo"> <%: string.Format("Last modified on {0} by {1}", Model.SpaNote.ModifiedDate ?? Model.SpaNote.CreatedDate, Model.SpaNote.ModifiedBy ?? Model.SpaNote.CreatedBy)%></div>
            <hr />
            <%: Html.Raw(Model.SpaNote.SpaNoteText)%>
        </div>
</div>

JS AJAX调用将视图加载到模态:

    var detailsSpaNoteSetup = function () {
    $(selectors.detailsSpaNoteLink).live('click', function () {

        var spaNoteId = $(this).attr(attributes.spaNoteId);

        $(selectors.dialog).attr(attributes.title, 'Spa Note Details');

        $.ajax({
            url: inputs.detailsUrl,
            type: "GET",
            data: {
                spaNoteId: spaNoteId
            },
            cache: false,
            success: function (result) {
                $(selectors.dialog).html(result.toString());
                $(selectors.dialog).dialog({
                    resizable: false,
                    height: 450,
                    width: 600,
                    modal: true,
                    buttons: {
                        Close: function () {
                            $(this).dialog('close');
                        }
                    }
                });
            }
        });
    });
}

主要是我想停止这种行为,理解为什么它会作为奖励发生。如果需要更多信息,请告诉我。

感谢。

要求的其他信息: Model的SpaNote属性是包含项目中spa注释的表的表对象。 SpaNoteText是spa注释表的一列,包含spa注释的内容(数据类型为nvarchar(MAX))。

数据库中的示例spa注释文本:

[Note content containing personal information]<hr /><a href="https://assets.maaxspas.com/ShowUsImages/large_351111100012-IMG_1018_20140305141439.JPG" target="_blank" /><img src="https://assets.maaxspas.com/ShowUsImages/norml_351111100012-IMG_1018_20140305141439.JPG" /></a><br /><a href="https://assets.maaxspas.com/ShowUsImages/large_351111100012-IMG_1025_20140305141439.JPG" target="_blank" /><img src="https://assets.maaxspas.com/ShowUsImages/norml_351111100012-IMG_1025_20140305141439.JPG" /></a><br /><a href="https://assets.maaxspas.com/ShowUsImages/large_351111100012-IMG_1026_20140305141439.JPG" target="_blank" /><img src="https://assets.maaxspas.com/ShowUsImages/norml_351111100012-IMG_1026_20140305141439.JPG" /></a><br /><a href="https://assets.maaxspas.com/ShowUsImages/large_351111100012-IMG_1027_20140305141439.JPG" target="_blank" /><img src="https://assets.maaxspas.com/ShowUsImages/norml_351111100012-IMG_1027_20140305141439.JPG" /></a><br />

从上面的数据库加载注释文本的HTML视图:

[Note content containing personal information]<hr><a href="https://assets.maaxspas.com/ShowUsImages/large_351111100012-IMG_1018_20140305141439.JPG" target="_blank"></a><img src="https://assets.maaxspas.com/ShowUsImages/norml_351111100012-IMG_1018_20140305141439.JPG"><br><a href="https://assets.maaxspas.com/ShowUsImages/large_351111100012-IMG_1025_20140305141439.JPG" target="_blank"></a><img src="https://assets.maaxspas.com/ShowUsImages/norml_351111100012-IMG_1025_20140305141439.JPG"><br><a href="https://assets.maaxspas.com/ShowUsImages/large_351111100012-IMG_1026_20140305141439.JPG" target="_blank"></a><img src="https://assets.maaxspas.com/ShowUsImages/norml_351111100012-IMG_1026_20140305141439.JPG"><br><a href="https://assets.maaxspas.com/ShowUsImages/large_351111100012-IMG_1027_20140305141439.JPG" target="_blank"></a><img src="https://assets.maaxspas.com/ShowUsImages/norml_351111100012-IMG_1027_20140305141439.JPG"><br>

如果需要更多,请告诉我,谢谢。

1 个答案:

答案 0 :(得分:1)

你的锚标签是自动关闭的。他们似乎正在包裹img,然后再次关闭。这个额外的</a>可能会干扰HTML内容的解释并产生意外行为