2012-02-09 8 views
0

私はwebgridを持っており、各行に対して、行を修正するためのfancyboxを開くためのリンクがあります。WebGrid(mvc3)のリンクを変更できません。(初回は動作しますが、2回目は動作しません)

ここpartialview上のWebGrid:

@model IEnumerable<PDSI.Model.Models.Vaccin> 
@{ 
var gridVaccins = new WebGrid(source: Model); 

} 
@gridVaccins.GetHtml(
tableStyle: "general_table", 
columns: 
    gridVaccins.Columns(
     gridVaccins.Column(
      columnName: "Vaccin_Type", 
      canSort: false, 
      header: "Type" 
     ), 
     gridVaccins.Column(
      canSort: false, 
      columnName: "Vaccin_Site", 
      header: "Site", 
      format: (item) => item.Vaccin_Site.Site 
     ), 
     gridVaccins.Column(
      canSort: false, 
      columnName: "Date_Recu", 
      header: "Date reçue", 
      format: (item) => item.Date_Recu == null ? "" : item.Date_Recu.Date.ToLongDateString() 
     ), 
     gridVaccins.Column(
      canSort: false, 
      columnName: "Refuse", 
      header: "Refusé", 
      format: (item) => item.Refuse ? @Html.Raw("oui") : @Html.Raw("non") 
     ), 
     gridVaccins.Column(
      canSort: false, 
      header: "", 
      format: @<a class="editVaccin" href="/Patient/EditVaccin/@item.Id">Modifier</a> 
     ), 
     gridVaccins.Column(
      canSort: false, 
      header: "", 
      format: @<a href="/Patient/DeleteVaccin/@item.Id">Supprimer</a> 
     ) 
) 
) 
<script type="text/javascript"> 
    $('a.editVaccin').fancybox(); 
</script> 

私はそれがこのコントローラに行くのリンクをクリックしてください:

public ActionResult EditVaccin(int id) 
    { 
     var model = _vaccinServices.GetVaccin(id); 

     ViewBag.VaccinSite = _vaccinServices.GetVaccinSite(); 
     return PartialView("VaccinEditor", model); 
    } 

私はそれをクリックして最初の時間は、私が取得するために、コントローラに入ります私のモデルは、行を変更して、モデルをfancyboxから保存してテーブルを更新した後、同じ行を変更するリンク "Modifier"を2回クリックすると、コントローラ(EditVaccin)に移動しません。 。 hrefは2回目のクリックでは機能していません。

2回目のクリックは、最初のクリックから取得したモデル情報でのみファンシーボックスを開きます。

これはIE 8-9でのみ発生し、Google Chromeで正常に動作していますが、IEを使用する必要があります。だから私はそれを動作させるために何をする必要がありますか?

これは私のWebGridである図である。

  <div style="width: 100%;"> 
       <a id="addVaccin" href="/Patient/AddVaccin/">Ajouter un vaccin</a> 
       <br /> 
       <br /> 
       <div id="main_vaccins">@Html.Action("GetVaccins")</div> 
      </div> 
<script type="text/javascript"> 
$('a#addVaccin').fancybox(); 
</script> 

これはWebGridを有する部分図をロードするコントローラである。

public ActionResult GetVaccins() 
    { 
     var listVaccins = _vaccinServices.GetVaccinsByPatient(SessionContext.IdPatient); 
     return PartialView("VaccinsTable", listVaccins); 
    } 

行を編集するpartialview:

@model PDSI.Model.Models.Vaccin 
<script src="../../Scripts/jquery.ui.datepicker.js" type="text/javascript"></script> 
@using (Html.BeginForm()) 
{ 
@Html.ValidationSummary(true) 

<fieldset> 
    <legend>Vaccin</legend> 
    @Html.HiddenFor(model => model.Id_Patient) 
    @Html.HiddenFor(model => model.Id) 
    <table> 
     <tr> 
      <td>@Html.LabelFor(model => model.Vaccin_Type) 
      </td> 
      <td>@Html.TextBoxFor(model => model.Vaccin_Type, new { @maxlength = "20" }) 
      </td> 
     </tr> 
     <tr> 
      <td>@Html.LabelFor(model => model.Vaccin_Site.Site) 
      </td> 
      <td>@Html.DropDownList("Vaccin_Site.Id", new SelectList(ViewBag.VaccinSite as System.Collections.IEnumerable, "Id", "Site", Model.Vaccin_Site.Id)) 
      </td> 
     </tr> 
     <tr> 
      <td>@Html.LabelFor(model => model.Date_Recu) 
      </td> 
      <td> 
       @Html.TextBox("Date_Recu", Model.Date_Recu == null ? "" : Model.Date_Recu.Value.ToLongDateString(), new { @class = "date" }) 
       @Html.ValidationMessageFor(model => model.Date_Recu) 
      </td> 
     </tr> 
     <tr> 
      <td>@Html.LabelFor(model => model.Refuse) 
      </td> 
      <td>@Html.CheckBoxFor(model => model.Refuse) 
      </td> 
     </tr> 
    </table> 
    <p> 
     <input type="submit" value="Enregistrer" /></p> 
</fieldset> 
} 

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#tabs").tabs(); 
    $('.date').datepicker(); 
}); 
$('form[action="/Patient/AddVaccin/"]').submit(function (event) { 
    $.ajax({ 
     url: "/Patient/AddVaccin/", 
     type: "POST", 
     dataType: 'html', 
     data: $('form[action*="/Patient/AddVaccin/"]').serialize(), 
     success: function (result) { 
      $.fancybox.close(); 
      $('#main_vaccins').text(''); 
      $('#main_vaccins').html(result); 
     }, 
     complete: function() { 

     }, 
     error: function (error) { 
      alert(error.toString()); 
     } 
    }); 
    event.preventDefault(); 
}); 

$('form[action*="/Patient/EditVaccin/"]').submit(function (event) { 
    $.ajax({ 
     url: "/Patient/EditVaccin/", 
     type: "POST", 
     dataType: 'html', 
     data: $('form[action*="/Patient/EditVaccin/"]').serialize(), 
     success: function (result) { 
      $.fancybox.close(); 
      $('#main_vaccins').text(''); 
      $('#main_vaccins').html(result); 
     }, 
     complete: function() { 

     }, 
     error: function (error) { 
      alert(error); 
     } 
    }); 
    event.preventDefault(); 
}); 
</script> 

編集のコントローラ(httpost):

[HttpPost] 
    public ActionResult EditVaccin(Vaccin model) 
    { 

      _vaccinServices.Edit(model); 
      return RedirectToAction("GetVaccins"); 

    } 

最後に、この仕事をしているの助けを

答えて

0

をありがとう!

$("a.editVaccin").fancybox({ajax: {cache: false}}); 

IEはキャッシュ内のpartialviewを保持していました。なぜなら、リンク上の2回目のクリックはコントローラに戻らずにpartialviewのみを開くからです。

関連する問題