0

我在我的 asp.net mvc Web 应用程序中使用网格堆栈来实现拖放功能。

我有一个“添加小部件”按钮....

<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 进行硬编码,这可以工作并添加小部件。

有任何想法吗?谢谢!

4

1 回答 1

2

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

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

现在在您的点击事件中,调用此操作方法并将返回的响应注入 DOM。我不知道你的addWidget方法是做什么的。所以我评论了这条线,并使用通用的 jQueryappend方法调用供您参考。

$('#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); 

         });


 });
于 2016-07-28T01:44:22.560 回答