Ich habe Probleme mit unauffälligen Ajax, um Daten von einem Kontaktformular zu posten.Unauffällige Ajax-Form für Teilansicht
Mein Teilansicht ist wie folgt:
@model site.ViewModel.Home.ContactUsViewModel
@using (Ajax.BeginForm("_ContactUsPartial", "Home",
new AjaxOptions { UpdateTargetId = "result" }))
{
<fieldset>
<legend>Contact Us</legend>
@Html.ValidationSummary(true)
<div id="result"></div>
<div class="editor-label">
@Html.LabelFor(m => m.FullName)
@Html.ValidationMessageFor(m => m.FullName)</div>
<div class="editor-field">@Html.TextBoxFor(m => m.FullName)</div>
<!-- other fields from model -->
<input type="submit" value="Submit"/>
</fieldset>
}
Mein Teilansicht auf einer anderen Seite wie folgt platziert:
@Html.Partial("_ContactUsPartial", new ContactUsViewModel());
My Home Controller wie folgt aus:
[HttpPost]
public ActionResult _ContactUsPartial(ContactUsViewModel viewModel)
{
if (ModelState.IsValid)
{
try
{
//send email
return Content("Thanks for your message!");
}
catch (Exception ex)
{
return Content("Problem sending the email.");
}
}
return Content("oops. invalid model");
}
Was Ich erwarte zu passieren, ist das, wenn ich Presse submit der Kontrolleur gebe etwas Textinhalt zurück, der gelegt wird im div mit einer id von "result".
Was passiert eigentlich, wenn ich auf "Senden" drücke, werde ich zu/Home/_ContactUsPartial weitergeleitet, wobei der Textinhalt das einzige Ding ist, das angezeigt wird.
Ich verstehe nicht, was hier vor sich geht ... und ich habe versucht, mich online nach Beispielen umzuschauen, nur um mich tiefer in dieses Loch zu graben.
Ich habe unaufdringliches Javascript in meiner Web.config aktiviert und ich habe auch einen Verweis auf jquery.unobtrusive-ajax.min.js.
In meinem Ordner Scripts ich die folgende, die relevant sein können:
- jquery.unobtrusive-ajax.min.js
- jquery.validate.unobtrusive.min.js
- MicrosoftMvcAjax.js
In meinem _Layout.cshtml Tag habe ich das erklärte folgendes:
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/bootstrap.min.js")" type="text/javascript"></script>
In meinem Global.asax.cs Application_Start Ich habe diese Zeile:
BundleConfig.RegisterBundles(BundleTable.Bundles);
RegisterBundles wie folgt aussieht:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
"~/Scripts/jquery-ui-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
nicht sicher, welche Bündel tun und wie sie arbeiten, weil ich scheinen, um es zu haben konfiguriert, um sie über diese ScriptBundle zu bringen ... aber dann habe ich auch sie manuell im Kopf der _Layout.cshtml ....
konfiguriert Jede Idee, was ich falsch mache? Ich würde wirklich eine Hilfe mit diesem schätzen!
Ok, so scheint dies ein Problem der nicht die unaufdringliche Setup-Recht. Haben Sie sichergestellt, dass die 'Microsoft.Unobtrusive' Bibliotheken aus dem Projekt entfernt wurden? Ich bin ein paar Mal auf dieses Problem gestoßen und es kam zu Problemen mit der Bibliothek und der Abhängigkeit. – Nomad101
@ Nomad101 Nein, ich habe das nicht getan ... nicht 100% sicher, wie man ... – mezoid
verwenden Sie Nuget mit Visual Studio? oder etwas anderes? Implementieren Sie auch eine Bündelung mit dem Projekt? – Nomad101