Jestem nowy w Asp.net MVC i szukałem informacji o Ajax.BeginForm
, ale kiedy stosowałem kody, to nie działało. Czy możesz udostępnić bardzo prosty przykład z Ajax.Beginform
za pomocą View, Controller, Model? Dzięki.Jak korzystać z Simple Ajax Beginform w Asp.net MVC 4?
Odpowiedz
Prosty przykład: Formularz z polem tekstowym i przyciskiem Szukaj.
Jeśli napiszesz "imię" w formularzu textbox
i prześlij, przyniesie Ci pacjentów z "name" w tabeli.
Widok:
@using (Ajax.BeginForm("GetPatients", "Patient", new AjaxOptions {//GetPatients is name of method in PatientController
InsertionMode = InsertionMode.Replace, //target element(#patientList) will be replaced
UpdateTargetId = "patientList",
LoadingElementId = "loader" // div with .gif loader - that is shown when data are loading
}))
{
string patient_Name = "";
@Html.EditorFor(x=>patient_Name) //text box with name and id, that it will pass to controller
<input type="submit" value="Search" />
}
@* ... *@
<div id="loader" class=" aletr" style="display:none">
Loading...<img src="~/Images/ajax-loader.gif" />
</div>
@Html.Partial("_patientList") @* this is view with patient table. Same view you will return from controller *@
_patientList.cshtml:
@model IEnumerable<YourApp.Models.Patient>
<table id="patientList" >
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.Number)
</th>
</tr>
@foreach (var patient in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => patient.Name)
</td>
<td>
@Html.DisplayFor(modelItem => patient.Number)
</td>
</tr>
}
</table>
Patient.cs
public class Patient
{
public string Name { get; set; }
public int Number{ get; set; }
}
PatientController.cs
public PartialViewResult GetPatients(string patient_Name="")
{
var patients = yourDBcontext.Patients.Where(x=>x.Name.Contains(patient_Name))
return PartialView("_patientList", patients);
}
a także jako TSmith powiedział w komentarzach, Nie zapomnij zainstalować jQuery Dyskretna Ajax biblioteki poprzez NuGet.
Dla innych, nie zapomnij o potrzebie biblioteki jquery.unobtrusive-ajax dla tego. – TSmith
Stworzyłem projekt w VS 2013, MVC5, mam jQuery Unftrusive Ajax Microsoftu, przez NuGet, ale to nie działa, otwiera się w nowym oknie :(To działało w MVC4. Myśli? –
jeśli dodasz @ Html.Partial ("_ patientList") pojawia się błąd, że ten widok musi mieć IEnumerable
Poza poprzednich instrukcji pocztowych, musiałem zainstalować pakiet Microsoft.jQuery.Unobtrusive.Ajax i dodać do widoku następującą linię
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
cała ta praca :)
model
public partial class ClientMessage
{
public int IdCon { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
Kontroler
public class TestAjaxBeginFormController : Controller{
projectNameEntities db = new projectNameEntities();
public ActionResult Index(){
return View();
}
[HttpPost]
public ActionResult GetClientMessages(ClientMessage Vm) {
var model = db.ClientMessages.Where(x => x.Name.Contains(Vm.Name));
return PartialView("_PartialView", model);
}
}
Zobacz index.cshtml
@model projectName.Models.ClientMessage
@{
Layout = null;
}
<script src="~/Scripts/jquery-1.9.1.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<script>
//\\\\\\\ JS retrun message SucccessPost or FailPost
function SuccessMessage() {
alert("Succcess Post");
}
function FailMessage() {
alert("Fail Post");
}
</script>
<h1>Page Index</h1>
@using (Ajax.BeginForm("GetClientMessages", "TestAjaxBeginForm", null , new AjaxOptions
{
HttpMethod = "POST",
OnSuccess = "SuccessMessage",
OnFailure = "FailMessage" ,
UpdateTargetId = "resultTarget"
}, new { id = "MyNewNameId" })) // set new Id name for Form
{
@Html.AntiForgeryToken()
@Html.EditorFor(x => x.Name)
<input type="submit" value="Search" />
}
<div id="resultTarget"> </div>
Zobacz _PartialView.cshtml
@model IEnumerable<projectName.Models.ClientMessage >
<table>
@foreach (var item in Model) {
<tr>
<td>@Html.DisplayFor(modelItem => item.IdCon)</td>
<td>@Html.DisplayFor(modelItem => item.Name)</td>
<td>@Html.DisplayFor(modelItem => item.Email)</td>
</tr>
}
</table>
- 1. Czy Simple Injector obsługuje MVC 4 ASP.NET Web API?
- 2. ASP.NET MVC 4 AJAX Złożenie nie działa
- 3. Ajax z Asp.Net MVC?
- 4. Asp.net MVC 4, jak korzystać z niestandardowego pola WebSecurity.createUserAndAccount
- 5. Jak korzystać SimpleMemberShip Provider w Asp.net MVC 4 Zastosowanie
- 6. Wyślij formularz za pomocą AJAX w Asp.Net mvc 4
- 7. asp.net MVC 4 z StructureMap
- 8. ASP.NET MVC i AJAX
- 9. Autofac Integracja MVC z ASP.Net MVC 4
- 10. MVC MiniProfiler z ASP.NET MVC 4
- 11. ASP.NET MVC 2 - Jak korzystać z DropDownListFor?
- 12. Jak używać jquery w asp.net mvc 4?
- 13. Warunkowa @ Scripts.Render w ASP.net MVC 4
- 14. Jak Mock HttpContext.User.Identity.Name w ASP.NET MVC 4
- 15. Jak korzystać z wielokrotnego wyboru w mvc 4?
- 16. Złóż żądanie AJAX za pomocą $ .ajax w MVC 4
- 17. Formularz ASP.Net MVC Ajax z walidacją jQuery
- 18. ASP.net MVC AntiForgeryToken przez AJAX
- 19. kaskadowych rozwijanego z KNOCKOUT.JS & ASP.NET MVC 4
- 20. Simple MVC mod-rewrite
- 21. ASP.NET MVC 4 i ExtensionlessUrlHandler
- 22. asp.net mvc disable ajax cache
- 23. Jak wykonywać żądania AJAX z długim odpytywaniem w ASP.NET MVC?
- 24. ASP.NET MVC 4 ViewModel z interfejsem podrzędnym
- 25. Asp.net mvc fileupload przez ajax
- 26. Jak korzystać z lokalnej bazy danych z gorącym ręcznikiem SPA na szablonie ASP.NET MVC 4
- 27. ASP.NET MVC: Wymuszenie żądania AJAX w działaniu
- 28. Niepoprawny URL ASP.NET MVC w wywołaniach ajax
- 29. Asp.Net Mvc 4 Kod źródłowy?
- 30. Jak wywołać kontroler z przycisku kliknij w asp.net MVC 4
Zobaczmy jakiś kod. – X3074861X
Sprawdź ten link: http://stackoverflow.com/questions/5410055/using-ajax-beginform-with-asp-net-mvc-3-razor –