我有以下代码:
@model pedidosOnlineMVC.Models.SuperUser
@{
ViewBag.Title = "MySystem";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Administration</h2>
@Html.AntiForgeryToken()
@using(var p = Html.Bootstrap().Begin(new Panel()))
{
using (p.BeginBody())
{
@Html.Bootstrap().Button().Text("Register new administrator").Id("btnReg")
@Html.Bootstrap().Button().Text("List administrators").Id("btnList")
@Html.Bootstrap().Button().Text("Search administrator").Id("btnSeek")
using (var ip = Html.Bootstrap().Begin(new Panel()))
{
using (ip.BeginBody())
{
<div id="partials">
</div>
}
}
}
}
正确的JQuery编码:
$(document).ready(
function () {
$('#btnReg').click(function () {
$.get('@Url.Action("partialRegAdmin", "SuperUser")', function (data) {
$('#partials').replaceWith(data);
});
});
$('#btnList').click(function () {
$.get('@Url.Action("partialListAdmin", "SuperUser")', function (data) {
$('#partials').replaceWith(data);
});
});
$('#btnSeek').click(function () {
$.get('@Url.Action("partialSeekAdmin", "SuperUser")', function (data) {
$('#partials').replaceWith(data);
});
});
});
在第一次单击任意三个按钮时它可以正常工作,但是在点击一个按钮后,其他两个按钮将不再工作。
我在这里阅读了一些帖子,认为它可能是一个缓存问题,所以我尝试使用$.ajax({cache: false})
,尝试使用[OutputCache(Duration = 0)]
,尝试创建以下属性:
public class NoCacheAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.HttpContext.Response.Cache.SetMaxAge(new TimeSpan(0, 0, 0, 0));
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
}
}
一切都没有用......任何人都知道可能出现什么问题?
编辑: 部分partialRegAdmin视图的请求代码:
@model pedidosOnlineMVC.Models.Administrador
@using (var f = Html.Bootstrap().Begin(new Form()))
{
@f.FormGroup().CustomControls(Html.AntiForgeryToken())
@f.FormGroup().TextBoxFor(model=>model.nome)
@f.FormGroup().TextBoxFor(model=>model.cpf).Data(new {mask="999.999.999-99"})
@f.FormGroup().TextBoxFor(model=>model.telefone)
@f.FormGroup().TextBoxFor(model=>model.login)
@f.FormGroup().PasswordFor(model=>model.senha)
@f.FormGroup().CustomControls(@Html.Bootstrap().SubmitButton().Text("Cadastrar"))
}
答案 0 :(得分:1)
你想要
$('#partials').html(data);
而不是
$('#partials').replaceWith(data);
基本上,当您第一次单击时,页面上的#partials
将完全替换为从服务器返回的任何html。由于PartialView不包含标识为partials
的元素,因此对$('#partials')
的后续调用找不到任何内容,因此不会替换任何内容。
html
将替换内容,在页面上留下partials
以供进一步使用。