Ich bin neu in ASP.NET und ich habe ein Problem, einen Inhalt zu meiner Hauptansicht hinzufügen. In HtmlBeginform lade ich die Datei per Knopfdruck hoch und nach dem Laden der Datei muss ich eine Teilansicht unter meiner Hauptansicht anzeigen. Ich weiß nicht, wie man Ajax-Skript richtig aufruft.asp.net mvc hinzufügen Teilansicht dynamisch mit Ajax
Meine Hauptansicht:
@using prvniAplikace.Models;
@using Chart.Mvc.ComplexChart;
@using Chart.Mvc.Extensions;
@{
ViewBag.Title = "Index";
}
@using (Html.BeginForm("LoadFile", "Home", FormMethod.Post,
new { enctype = "multipart/form-data" }))
{
<div class="form-group" align="left">
<label for="exampleInputFile">Load File</label>
<input type="file" accept=".tcx" class="form-control-file" name="exampleInputFile" id="exampleInputFile" aria-describedby="fileHelp">
</div>
<div class="form-group" align="left">
<button class="btn btn-primary" type="submit" id="add" name="add" value="Add">Display</button>
</div>
}
@section Scripts {
<script type="text/javascript">
$("#add").on('click', function() {
$.ajax({
async: false,
url: '/Home/getContent'
}).success(function (partialView) {
$('#getContent').append(partialView);
});
});
</script>
}
View I auf eine Hauptansicht hinzufügen möchten:
@{
ViewBag.Title = "getContent";
Layout = null;
}
<h2>Obsah</h2>
<p>Odstavec</p>
<p>@DateTime.Now.ToString()</p>
Controller:
namespace prvniAplikace.Controllers
{
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
return View();
}
public ActionResult getContent()
{
return PartialView("~/Views/Home/AjaxRequest.cshtml");
}
[HttpPost]
public ActionResult LoadFile(HttpPostedFileBase exampleInputFile)
{
if (exampleInputFile.ContentLength > 0)
{
var fileName = Path.GetFileName(exampleInputFile.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
exampleInputFile.SaveAs(path);
string xmlFile = Server.MapPath(fileName);
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNodeList nodes = doc.GetElementsByTagName("HeartRateBpm");
XmlNodeList nodes2 = doc.GetElementsByTagName("Time");
}
return RedirectToAction("Index");
}
}
}
Aktuell Ihre Ajax-Aufruf wird mit der Schaltfläche Hinzufügen klicken verdrahtet, die nicht eine Ajax-Datei-Upload nicht tun, aber eine normale Form einreichen, werden Sie danach eine neue GET auf der Seite Index tun (wegen der RedirectToAction-Methodenaufruf). Wann möchten Sie den Inhalt der Teilansicht anzeigen? Wenn die Indexseite nach erfolgreichem Upload geladen wird (kein Ajax-Datei-Upload)? – Shyju
Ich habe einen Datei-Upload über das normale Formular und dann muss ich noch weitere Inhalte hinzufügen, die in meiner aktuellen Ansicht sind. Die Indexseite wird nach dem erfolgreichen Hochladen nicht geladen, sondern zeigt nur eine Nachricht an. Schlägst du vor, es anders zu machen? –
Da es sich um eine normale Formularübergabe handelt, wird das Formular beim Senden des Formulars gesendet, und der Server gibt eine 302-Antwort zurück (für eine neue GET-Anforderung an die Indexseite). Wann möchten Sie Ihr Teilergebnis tatsächlich in diesem Flow anzeigen? – Shyju