Mam problem z użyciem dyskretnego ajaxu do publikowania danych z formularza kontaktowego.Dyskretny formularz Ajax do częściowego wyświetlenia
Moja Częściowy widok jest tak:
@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>
}
Moja Częściowy widok jest umieszczony na innej stronie tak:
@Html.Partial("_ContactUsPartial", new ContactUsViewModel());
My Home Controller tak:
[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");
}
Co Spodziewam się, że to się stanie, gdy po naciśnięciu przycisku submit kontroler zwróci pewną zawartość tekstową, która zostanie umieszczona w div z identyfikatorem "wyniku".
To, co się właściwie dzieje, to po naciśnięciu przycisku "submit", następuje przekierowanie do/Home/_ContactUsPartial z treścią tekstową jako jedyną wyświetlaną.
Nie rozumiem, co się tutaj dzieje ... i próbowałem rozejrzeć się po przykładach online tylko po to, aby znaleźć się głębiej w tej dziurze.
Mam dyskretny javascript włączony w moim Web.config i mam również odniesienie do jquery.unobtrusive-ajax.min.js.
W moim folderze Scripts Mam następujący które mogą być istotne:
- jquery.unobtrusive-ajax.min.js
- jquery.validate.unobtrusive.min.js
- MicrosoftMvcAjax.js
W moim tagu _Layout.cshtml mam następujący oświadczył:
<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>
W moim Global.asax.cs Application_Start mam ten wiersz:
BundleConfig.RegisterBundles(BundleTable.Bundles);
RegisterBundles wygląda tak:
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*"));
nie wiesz, co robić i wiązki, jak one działają, ponieważ wydaje mi się, żeby go mieć skonfigurowane, aby wprowadzić je za pośrednictwem tego składnika ScriptBundle ... ale potem mam je również skonfigurowane ręcznie w nagłówku _Layout.cshtml ...
Jakieś pojęcie, co robię źle? Byłbym wdzięczny za pomoc!
Okej, więc wydaje się, że problem polega na tym, że nie ma niepoprawnej konfiguracji. Czy upewniłeś się, że 'Microsoft.Unobtrusive'libraries zostały usunięte z projektu? Kilka razy natknąłem się na ten problem, który zakończył się problemami związanymi z biblioteką i zależnościami. – Nomad101
@ Nomad101 Nie, nie zrobiłem tego ... nie jestem w 100% pewien jak to zrobić ... – mezoid
czy używasz Nuget z visual studio? albo coś innego? Czy wdrażasz również sprzedaż wiązaną z projektem? – Nomad101