我正在开发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进入控制器。请需要帮助。谢谢
答案 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
是保存控制器值的参数。