渲染局部视图以对字符串造成不便

时间:2014-07-07 04:25:40

标签: asp.net-mvc html5 asp.net-mvc-4 c#-4.0 razor

我正在开发ASP.NET MVC5(Razor)项目。我想在单击Test ActionLink时将局部视图渲染到DIV中,因此Controller的代码是: -

public ActionResult Accion(string vista)
{
    if (string.IsNullOrEmpty(vista) || !Request.IsAjaxRequest())
        return View();
    else
    {
            object vistaModelo = null;
            if (vista.Contains("Usuarios"))
                vistaModelo = new UsuariosVistaModelo();
            string render = PartialView(vista, vistaModelo).RenderToString();
            return Json(new { data = render });
    }
}

cshtml代码: -

<div class="menu">
@Html.ActionLink("Test","Accion","Navigation",new { vista = "~/Views/Soporte/Usuarios.cshtml" }, new { @class = "accion" })

   <script>

    //Dispara la acción en el controlador del servidor
    $('.accion').live("click", function () {
        $.ajax({
            url:this.href,
            type:'post',
            success:function(data)
            {
                //data contiene el resultado devuelto por el servidor
                $('.content').html(data);
            },
            error: function (req, status, error) {
                alert(error);
            }
        });
        //Se retorna falso para prevenir reenviar a otra pagina
        return false;
    });

   </script>
</div>

<div class="content">
</div>

当我点击Test ActionLink,$(&#39; .accion&#39;)。现场(&#34;点击&#34; ...事件未被触发,直接进入Accion进入控制器。请需要帮助。谢谢

2 个答案:

答案 0 :(得分:0)

对代码进行一些修改以使其正常工作

**将您的操作修改为

@Html.ActionLink("Test","Accion","Navigation",new { vista = "~/Views/Soporte/Usuarios.cshtml" }, new { @class = "accion", onclick = "javascript:return false;"  })

现在锚定默认行为不起作用。

**现在修改您的Jquery,如

//Dispara la acción en el controlador del servidor
$('.accion').click(function () {
    $.ajax({
        url:this.href,
        type:'post',
        data : {"vista" : "~/Views/Soporte/Usuarios.cshtml"},
        success:function(data)
        {
            //data contiene el resultado devuelto por el servidor
            $('.content').html(data);
        },
        error: function (req, status, error) {
            alert(error);
        }
    });
    //Se retorna falso para prevenir reenviar a otra pagina
    return false;
});

//在帖子顶部添加帖子

[HttpPost]    
public ActionResult Accion(string vista)
{
if (string.IsNullOrEmpty(vista) || !Request.IsAjaxRequest())
    return View();
else
{
        object vistaModelo = null;

        if (vista.Contains("Usuarios"))
            vistaModelo = new UsuariosVistaModelo();

        string render = PartialView(vista, vistaModelo).RenderToString();
        return Json(new { data = render });
}
}

也可以使用on / click而不是live

答案 1 :(得分:0)

对Jquery级别进行一些修改

   // code
        success:function(data)
        {
            $('.content').html(data.data);
        },
        error: function (req, status, error) {
            alert(error);
        }
  //  code

尝试更换  $('.content').html(data);$('.content').html(data.data);此处第二个 data 是保存控制器值的参数。