2012-03-28 5 views
0

Das, was Aktion sieht aus wieUpdate WebGrid auf Dropdownlist-Post zurück asp.net Mvc

mein Controller ist
[HttpPost] 
[OutputCache(Location = OutputCacheLocation.None)] 
public ActionResult GetData(string Key, string Physician) 
{ 
    string physicianCode = Physician.Split(' ').ElementAt(0).Trim(); 
    CaseProfile caseProfile = HttpContext.Cache.Get(Key) as CaseProfile; 
    return PartialView("_CaseProfile", caseProfile); 
} 

Dies ist, was ich auf meiner Teilansicht _CaseProfile habe, die innerhalb jQuery angezeigt Dialogs

<div id="paged-case-profile-div">  
@using (Ajax.BeginForm("GetData", "Group", 
    new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "paged-case-profile-div" 
     , OnSuccess="OnSuccess", OnComplete="OnComplete", InsertionMode=InsertionMode.Replace })) 
     { 
     @Html.HiddenFor(m => m.Key) 
     @Html.DropDownList("Physician", Model.PhysicianSelectList, 
       new { style = "font-size: 11px;", onchange = "this.form.submit();" }) 
<div> 

@{ 

var grid = new WebGrid(source: Model.Items.AsEnumerable(), 
canPage: true, canSort: false, rowsPerPage: 10); 
       } 

       @grid.GetHtml(
       htmlAttributes: new { align = "center" }, 
       tableStyle: "table", 
       headerStyle: "header-row", 
       alternatingRowStyle: "alternate-row", 
       columns: 
        physicianGrid.Columns(
         physicianGrid.Column("PatientId", "Patient Id"), 
         physicianGrid.Column("MedRecNum", "Med Rec Num"), 
         physicianGrid.Column("AdmissionDate", "Admission Date"))) 
      </div> 
     } 
    </div> 

Alle meine js-Dateien werden in der Datei _Layout.cshtml hinzugefügt. Ich möchte Ajax Post wieder auf Dropdown-Liste und aktualisieren Sie die Auslieferungs-page-divide-div mit dem neuesten Inhalt von Controller-Aktion zurückgegeben. Das Problem ist, dass der neue Inhalt, der vom Server zurückgegeben wird, in die neue Seite gerendert wird, die ich nicht möchte. Ich möchte nur, dass mein div außerhalb der Ajax-Form mit neuen Inhalten aktualisiert wird. Bitte beachten Sie, dass ich nur auf JavaScript-Methoden OnSuccess und OnComplete Warnmeldungen zeige. Können Sie mir bitte mitteilen, was in meinem Code falsch ist?

Auch - bitte beachten Sie, dass ich fast alle damit verbundenen Probleme auf Stackoverflow überprüft habe, aber keine von ihnen scheint mir zu helfen. Ich würde mich freuen, wenn jemand auf das Unrecht in meinem Code hinweisen und mir Vorschläge zur Korrektur geben könnte, anstatt nur auf eine andere Frage/einen Beitrag zu verweisen.

Antwort

0

Stellen Sie sicher, das jquery.unobtrusive-ajax.js Skript zu Ihrer Seite oder die Ajax.BeginForm Helfer werden nicht anders als referenziert als ein Standard- Html.BeginForm Helfer:

<script type="text/javascript" src="@rl.Content("~/scripts/jquery.unobtrusive-ajax.js")"></script> 

In Ihrer Dropdown-Liste versuchen, zu ersetzen :

onchange="this.form.submit();" 

mit:

onchange="$(this).closest('form').submit()" 

oder geben Sie Ihre Ajax eine ID bilden, und dann:

onchange="$('#myajaxform').submit()" 

Wenn Sie this.form.submit(); tun Sie das Ereignis des zugrunde liegenden DOM-Element einreichen aufrufen, die keine onsubmit Handler ausführt, die gewesen sind abonniert dieses Formular.

+0

Es ist bereits in meiner _Layout.cshtml Seite. Und alle meine anderen Dialogboxen, die Ajax-Formulare haben, funktionieren gut, das Problem ist nur dieser Teil. – user979189

+0

@ user979189, OK, ich habe meine Antwort mit einem anderen Vorschlag aktualisiert. –

+0

Super! Es hat wie ein Zauber funktioniert. – user979189

Verwandte Themen