Für mehrere Tage kann ich einfach nicht das Problem selbst finden, das macht mich wirklich verrückt.Controller generieren wenige Threads, obwohl nicht gefragt
Ich habe asp.net (mvc4) Web-Anwendung, wo gibt es mehrere Indexseiten (Liste anzeigen), wenn Sie auf ein Element in der Liste klicken, gibt es Bearbeitungsansicht Seite zurück. Auf der Bearbeitungsseite (in der Ansicht selbst) gibt es eine Schaltfläche zum Absenden, die die Datenbank aktualisieren und auf die Indexseite umleiten sollte.
(Zuerst wurde "submit" mit HTML-Code über Teilansicht geladen, aber ich habe es so geändert, dass ich zur Indexseite umleiten kann - weil "untergeordnete Aktionen keine Redirect-Aktionen ausführen dürfen").
Das Problem ist also, dass der Controller nicht auf die Indexseite umleitet.
Wenn ich einen Breakpoint in der Post-Funktion im Controller setzen, sehe ich, dass einige Threads den Code ausgeführt, obwohl nicht nach Threads gefragt, und wenn ich mit dem Cursor auf einen der Prozesse Debug-Pfeile stehen, kann ich Nachricht sehen " der Prozess oder der Thread hat sich seit dem letzten Schritt geändert ".
Irgendwie weiß ich nicht, wie, löste ich das Problem auf einer Seite (weiß nicht wie, weil ich nicht weiß, was das verursacht), aber manchmal (zufällig) es erscheint wieder, und auf der anderen Seite tat ich nicht schaffen, es zu lösen.
Hier ist ein Code aus Controller und aus Sicht:
Controller:
[HttpPost]
public ActionResult Edit([ModelBinder(typeof(OpportunityBinder))] OpportunityModel draft)
{
try
{
if (Request.Params["cancel"] != null)
{
return RedirectToAction("index", Utils.CrmDB.GetOpportunities());
}
if (draft.IsValid())
{
if (Utils.CrmDB.UpdateOpportunity(draft))
return RedirectToAction("Index", Utils.CrmDB.GetOpportunities());
}
return View(draft);
}
catch
{
return View();
}
}
Ausblick:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
/* Some divs */
<p>
<input type="submit" value="Update" />
</p>
</fieldset>
<fieldset>
/* Some partial views*/
/* loaded using @Html.Action() */
</fieldset>
}
@section Scripts
{
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui")
}
Teilansicht Code:
@model Genius_crm.Models.ActivityListModel
<p>
<button id="dlgAddActivity">
New
</button>
</p>
<div>
<table>
/* some tr and td */
</table>
</div>
<script type="text/javascript">
$(document).ready(function() {
$('#dlgAddActivity').each(function() {
var $link = $(this);
var pathname = window.location.pathname;
var parts = pathname.split('/')
var sub = parts[3]
var $dialog = $('<div id="addDialog"></div>')
.load('@Url.Action("AddActivityToOppPartial", "Opportunity")[email protected]&[email protected]')
.dialog({
autoOpen: false,
title: $link.attr('title'),
width: 758,
height: 265,
resizable: false,
//close: function (event, ui) { window.location.reload();}
});
$link.click(function() {
$dialog.dialog('open');
return false;
});
});
});
Also - ich hoffe, ich habe mein Problem klar gemacht. Ich habe einige Beiträge zu diesem Thema durchgesehen, und keiner von ihnen hat mir geholfen. Das Problem tritt auch in Chrome und im IE auf.
EDIT # 1 - Beim Auskommentieren der Teilansichten verschwindet das Problem auf allen Seiten!
EDIT # 2 - Scheint, dass ein Problem mit Schaltflächen in Teiltönen, die andere Controller-Aktionen verwenden, ist.
EDIT # 3 - Ich habe Code der Teilansicht mit @ Html.Action() geladen, die ein Skript für jquery-ui Dialog enthalten.
Wie renderst du deine Teilansichten - rufen sie andere Controller-Aktionen auf? – Paddy
Ich verwende @ Html.Action(). Und ja, sie verwenden andere Controller-Aktionen. – ayheber