0

在这里,我有一个局部视图,我尝试将另一个局部视图插入到 div#Comments 中,而不是 Google Chrome 投射异常

@{
  Layout = null;
  var data = Html.Partial("Partial/Comments", Model).ToHtmlString();
}
<script>
var c = $("#Comments");
c.empty();@
c.html("@data"); // here is exception
</script>

这是在数据中呈现的代码

<form action="/Quest/Comment" class="form-horizontal" id="CommentAddForm" method="post">            <fieldset>
            <input id="qid" name="qid" type="hidden" value="11" />
                <span class="field-validation-valid" data-valmsg-for="body" data-valmsg-replace="true"></span>
            <div><input id="body" name="body" type="text" value="write here" /></div>


            </fieldset>
</form>        <button id="CommentAdd">
                        Add Comment
                    </button>

这部分在我项目的其他部分工作正常,但在这里我遇到了麻烦。我应该怎么做?

更新 这里是谷歌浏览器调试器捕获的代码

  <div ></div>
  success    <script>
  var c = $("#Comments");
  c.empty();
  c.html("
  &lt;form action=&quot;/Quest/Comment&quot; class=&quot;form-horizontal&quot;id=&quot;CommentAddForm&quot; method=&quot;post&quot;&gt;            &lt;fieldset&gt;
  &lt;input id=&quot;qid&quot; name=&quot;qid&quot; type=&quot;hidden&quot;value=&quot;11&quot; /&gt;
            &lt;span class=&quot;field-validation-valid&quot; data-valmsg-for=&quot;body&quot; data-valmsg-replace=&quot;true&quot;&gt;&lt;/span&gt;
        &lt;div&gt; &lt;input id=&quot;body&quot; name=&quot;body&quot; type=&quot;text&quot; value=&quot;write here&quot; /&gt;&lt;/div&gt;
        &lt;/fieldset&gt;
 &lt;/form&gt;        &lt;button id=&quot;CommentAdd&quot;&gt;
                    Add Comment
                &lt;/button&gt;
4

2 回答 2

1

您正在将任意文本插入到 Javascript 字符串文字中。
如果该文本恰好包含特殊字符(引号或换行符或反斜杠),则它不是有效的字符串文字。
这给您一个 Javascript 语法错误。

Razor 也通过对文本进行 HTML 编码使情况变得更糟。

您需要对文本进行Javascript编码,以便它始终是有效的字符串文字。
你可以通过调用来做到这一点HttpUtility.JavaScriptStringEncode()

您还需要通过调用Html.Raw().

于 2013-09-24T02:39:00.473 回答
0
 c.html('@HttpUtility.HtmlDecode(data)');

但是,您可能会遇到多行问题。您可以尝试通过 AJAX 在局部视图中加载:

 c.load('@Url.Content("Partial/Comments")');
于 2013-09-23T17:30:26.507 回答