【问题标题】:Rendering a partial view with jquery使用 jquery 渲染局部视图
【发布时间】:2023-03-30 17:36:01
【问题描述】:

问题;

我有一个包含两个部分视图的视图,一个视图用于处理客户端消息和一个网格视图。

gridview 是一个表单,可以删除更新项。在 tempdata 中生成删除或更新错误/成功消息时,但仅从 actionresult 函数呈现网格部分视图。

我需要一种方法来简单地呈现消息部分视图而不发布任何内容或将其重定向到控制器,因为数据已经存在于 tempData 中。

查看:

<div id="page-KnownRecipient">   

    @Html.Partial("ClientSideMessages")

    @Html.Partial("_TabsPartial")

    @if(Model != null)
    {
        using (Html.BeginForm())
        {
            @Html.Partial("_EditModePartial", Model);//Grid
        }
    }

</div>

来自 gridview 的所有回调路由仅返回部分视图 EditModePartial,并且由于永远不会重新加载 VIEW,因此在删除/更新回调后永远不会呈现应该在“ClientSideMessages”部分中显示的消息。因此,我需要一种使用 jquery 呈现“ClientSideMessages”局部视图的方法,不需要新数据,只需要实际呈现局部视图。

//---- 最终使用了这样的东西;

查看;

    <div id="detailsDiv">
        @Html.Partial("ClientSideMessages")
    </div>

控制器;

public ActionResult StatusMessages()
{
    return PartialView("ClientSideMessages");
}

JS;

function getStatusMessages() {
    var sURL = "/Home/StatusMessages"; // Just put the function in some base controller
    var $detailDiv = $('#detailsDiv');

    $.get(sURL, function (data) {
        $detailDiv.html(data);
    });
}

感谢您的提示和指点!

【问题讨论】:

  • 你的问题不是很清楚。您是否只想隐藏和显示已呈现的标记?
  • 没有数据是“新的”,可以从网格上的更新/删除功能中说。所以需要对 msgs 部分进行实际的重新渲染。!

标签: c# jquery asp.net-mvc gridview razor


【解决方案1】:

如果你只想渲染

@Html.Partial("ClientSideMessages")

使用 Jquery 你可以:

<div id="target">
    @Html.Partial("ClientSideMessages")
</div id="target">

并使用 ajax:

$.ajax({
        url: "/{Controle}/ClientSideMessages",
        type: "POST",
        contentType: "application/json; charset=utf-8",
        data: {Your data},
        error: function (data) {
            {error message};
        },
        success: function (data) {
                $('#target').html(data); // loading partialView into div
        }
    });

【讨论】:

    【解决方案2】:

    为此,您必须在控制器上创建一个仅返回客户端消息部分视图的操作。完成后,您必须执行以下操作。

    <div id="page-KnownRecipient">   
    
        <div id="clientMessages">
        @Html.Partial("ClientSideMessages")
        </div>
        @Html.Partial("_TabsPartial")
    
        @if(Model != null)
        {
            using (Html.BeginForm())
            {
                @Html.Partial("_EditModePartial", Model);//Grid
            }
        }
    
    </div>
    

    然后您可以使用以下函数在任何回调中呈现客户端消息。

    <script type="text/javascript>
    $(function(){
       var renderClientMessage = function(){
       $("#clientMessages").load("ClientMessageAction_URL");
    };
    });
    </script>
    

    【讨论】:

    • 你忘记了 $("clientMessages") 中的选择器 #
    • 我在控制器中做了一个这样的功能; public ActionResult loadmsg() { return PartialView("ClientSideMessages");和js; $(function refreshM(){ var renderClientMessage = function(){ $("#clientMessages").load("Settings/loadmsg"); }; });但是没有呈现部分消息。
    • 先检查你提供的网址,你应该提供正确的路径。如果请求被发送到服务器并且您从中获得了正确的输出,请在开发者工具的帮助下检查网络。
    猜你喜欢
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 2011-11-17
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多