如何将部分视图中生成的HTML插入到javascript代码中?

时间:2016-07-28 01:26:56

标签: javascript jquery asp.net-mvc razor gridstack

我在asp.net mvc web应用程序中使用grid-stack进行拖放功能。

我有一个“添加小工具”按钮....

<button class="btn btn-white btn-primary" id="addwidget" type="submit">Add Widget</button>

我还有一堆MVC5部分页面(Razor),每个“小部件”都有一个文件。当我单击“添加窗口小部件”按钮时,我想在页面上插入窗口小部件。现在这里是按钮点击事件的js代码......

        $('#addwidget')
        .click(function () {
            var grid = $('.grid-stack').data('gridstack');
            var partialView = @Html.Partial("~/Views/Widgets/_MyImportLatest.cshtml").ToHtmlString();
            grid.addWidget($('<div class="ibox-content" style="height:160px;">' + partialView + '</div>'), 0, 0, 3, 2, true);
        });

是的,这是与js混合的Razor代码。并且,不幸的是它根本不像partialView,你可能已经猜到了。

我正在尝试将生成的局部视图基本上放到字符串中,以便我可以在addWidget函数中使用该html字符串。如果我对partialView进行硬编码,则此功能会添加。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以考虑根据需要通过操作方法异步获取部分视图内容。单击添加按钮后,对action方法进行ajax调用,该方法将返回html标记,您可以根据需要将其注入DOM。

public ActionResult GetWidget()
{
  return PartialView("~/Views/Widgets/_MyImportLatest.cshtml")
}

现在,在您的点击事件中,调用此操作方法并将响应注入DOM。我不知道你的addWidget方法做了什么。所以我评论说出来并使用通用的jQuery append方法调用作为参考。

$('#addwidget').click(function () {

        var grid = $('.grid-stack').data('gridstack');
        $.get("/YourControllerName/GetWidget",function(htmlResponse){

            $("#YourContainerDiv").append(htmlResponse);
            // grid.addWidget($('<div>' + htmlResponse + '</div>'), 0, 0, 3, 2, true); 

         });


 });