【问题标题】:ASP.NET MVC 3 Razor Rendering Partials from One Controllers View to Another Controllers ViewASP.NET MVC 3 Razor 将部分从一个控制器视图渲染到另一个控制器视图
【发布时间】:2023-03-12 08:21:01
【问题描述】:

在不刷新主页的情况下,从局部视图重定向到另一个局部视图的最佳方式是什么?因此,单击按钮后,1 个局部视图变为另一个局部视图。你能用 jQuery 做到这一点,还是有更好的方法来做到这一点? 你还需要传递一个 id

【问题讨论】:

    标签: jquery asp.net asp.net-mvc-3 razor asp.net-mvc-partialview


    【解决方案1】:

    在这种情况下,AJAX 似乎是一个很好的解决方案。所以你可以在页面的某处放置一个按钮:

    @Html.ActionLink(
        "link text",
        "someAction",
        "someController",
        new { id = "put here some id you want to send to server" },
        new { id = "myLink" }
    )
    
    <div id="partial2Div"></div>
    

    然后在一个单独的 javascript 文件中不显眼地 AJAXify 这个链接:

    $(function() {
        $('#myLink').click(function() {
            $('#partial2Div').load(this.href);
            return false;
        });
    });
    

    控制器动作将简单地返回相应的局部视图:

    public ActionResult SomeAction(string id)
    {
        var model = ...
        return PartialView(model);
    }
    

    【讨论】:

    • 如果我删除返回 false,他会显示新的局部视图,提供一个全新的页面。如果我使用 return false (就像在你的例子中)什么都不会发生
    • @Thomas,您可以在 FireBug 中检查 AJAX 请求。您将看到控制器操作是否被命中以及它返回的内容。
    【解决方案2】:

    Ajax.ActionLink 将立即为您执行此操作,而无需编写额外的 javascript 代码。

    @Ajax.ActionLink("Link Text","Action","Controller",new {id= myId},new AjaxOptions{InsertionMode=InsertionMode.Replace, HttpMethod="get", UpdateTargetId="target-location-id"})
    

    【讨论】:

    • 当我单击操作链接时,会呈现一个新页面。部分视图必须更改页面,而不是父页面。
    • 您是否包含了所需的 javascript 文件:jquery、MicrosoftAjax.js 和 MicrosoftMvcAjax.js?
    • 是的,我把它放在我的父页面上,但它仍然给了我一个新页面(即使方法是 PartialViewResult 类型而不是 ActionResult 类型)
    • 我猜应该很简单,其中有一个父页面和一个局部视图,当您单击操作链接或按钮时,局部视图会在其中呈现一个新视图。
    • 是否存在具有“updatetargetid”指定的id的div或类似的东西?如果在firefox中点击链接,错误控制台(tools->error console)是否有javascript错误
    猜你喜欢
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多