0

我有以下代碼火災:加載按鈕點擊局部視圖只在第一次點擊

@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); 
        }); 
       }); 
      }); 

和它的作品罰款的第一次點擊三個按鈕中的任何一個,但是,在點擊之後,其他兩個將不再工作。 我讀過這裏一些帖子sying,它可能是一個緩存的問題,所以我嘗試使用$.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); 
    } 
} 

所有的都沒用......任何人有任何想法可能是錯誤的?


編輯:

@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

我假設'partialRegAdmin'和其他人返回某種形式的HTML建立在一些視圖,對不對?你能發表這個視圖代碼嗎? – Andrei

+0

您的意思是控制器代碼或實際的'PartialView' cshtml代碼? –

+0

部分視圖1 – Andrei

回答

1

你想

$('#partials').html(data); 

代替

$('#partials').replaceWith(data); 

基本上當你點擊了F: 爲偏partialRegAdmin視圖請求的代碼。第一次,頁面上的#partials被完全替換爲從服務器返回的任何html。由於您的PartialView不包含任何元素,其ID爲partials,因此對$('#partials')的調用找不到任何內容,因此沒有任何內容被替換。

html另一方面將取代內容,在頁面上留下partials進一步使用。

+0

是。非常感謝。 –