Html.Partial 在 Javascript

Html.Partial in Javascript

我正在尝试在我的 javascript 代码中呈现部分视图。局部视图本身也包含 JS 代码,它是一个 kendo window.

这是我的代码,在此 :

中提出了更改建议
var win = "@Html.Partial("_GenericWindow").ToString().Replace(Environment.NewLine, "").Replace(" ", "")";

$(".body-content").append(win);

但是这段代码在我的页面中呈现字符串:

<divid="7067ea1a-0425-44a6-99d3-aefb37f088ed"></div><script> jQuery(function(){jQuery("#7067ea1a-0425-44a6-99d3-aefb37f088ed").kendoWindow({"modal":false,"iframe":false,"draggable":true,"scrollable":true,"pinned":false,"title":null,"resizable":true,"content":null,"actions":["Close","Minimize","Refresh"]});});</script>

最后,这是我的部分观点:

@{
    var winId = Guid.NewGuid().ToString();
}

@(Html.Kendo().Window()
    .Name(winId)
    .Draggable()
    .Resizable()
    .Actions(actions => actions.Close().Minimize().Refresh())
)

问题是 MVC 阻止您将原始 HTML 注入响应流。

您可以通过引入@Html.Raw() 来修改您的代码,以告诉 MVC 您希望它注入原始 HTML

例如..

var win = "@Html.Raw(@Html.Partial("_GenericWindow").ToString().Replace(Environment.NewLine, "").Replace(" ", ""))";

$(".body-content").append(win);

好吧,这条线工作正常:

$('.body-content').load('/Home/win?window='.concat(text));

并且 win 操作将 return 部分视图。