Charge partielle vue sur le bouton cliquez sur
Cette question peut être répété, mais j'ai quelques question. J'ai une liste déroulante et bouton de recherche dans ma page. où je lier la vue avec modèle sur la liste déroulante sur le changement de l'événement. Et lorsque l'on clique sur le bouton Rechercher de la valeur sélectionnée dans la liste déroulante concernant la liste des dossiers affiche dans la vue partielle. Tout cela est fait correctement, comme indiqué ci-dessous:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ApricaCRMEvent.Models.CRM.DatabaseEntities.CRM_Doctor_Request>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
MDLNoDDLIndex
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script src="../../Scripts/jquery.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-migrate-1.0.0.js" type="text/javascript"></script>
<script type="text/javascript">
//script for binding drop down list value from view to model
$("#viewlist").hide();
function TestFun()
{
var mdlno = $("#ddlMDLNo").val();
var txtmdlno = document.getElementById("Request_For_Id");
txtmdlno.value = mdlno;
//alert(txtmdlno.value);
$("#viewlist").hide();
}
var mdlno = $("#ddlMDLNo").val();
function Datalist(mdlno) {
$("#viewlist").show();
$.ajax({
url: "/Search/MDLNoDataList", //url or controller with action
type: "POST",
data: mdlno,
dataType: "html",
success: function (data) {
$("#viewlist").html(data); //target div id
},
error: function () {
alert("No Projects Found");
$("#viewlist").html('there is error while submit');
}
});
}
//$(function () { $("#btnclick").click(function () { $("#viewlist").load('/Search/MDLNoDataList') }); });
//script for loading partial view into div tag "viewlist"
</script>
<div>
<h2>Search by MDLNo</h2>
<% using (Html.BeginForm())
{ %>
<%: Html.ValidationSummary(true, "Profile Updation was unsuccessful. Please correct the errors and try again.") %>
Select MDLno
<%= Html.DropDownList("ddlMDLNo", ViewData["MDLno"] as SelectList, "--Select One--", new { onchange = "TestFun()" })%>
<%: Html.HiddenFor(model => model.Request_For_Id) %>
<input type="submit" value="search" name="SearchMDLNo" id="btnclick" onclick ="Datalist(a)"/>
<div id="viewlist"><%Html.RenderAction("MDLNoDataList"); %> </div> <%--partial view should be loaded here.--%>
<% } %>
</div>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
Tout fonctionne correctement mais.. vue partielle de la balise div est de montrer avant de cliquer sur le bouton rechercher. Je veux que .. La vue partielle de la charge quand je clique sur le bouton
pour ce que j'ai essayé ce code :
$("#btnclick").click(function () { $("#viewlist").load('/Search/MDLNoDataList.ascx') });
Et j'ai aussi essayé .show() et .hide() mais le problème avec ça, c'est .. à Chaque fois que je clique sur le bouton de l'ensemble de la page est actualisée afin de chargement .. vue partielle n'est pas fait correctement.
contrôleur:
public ActionResult MDLNoDDLIndex()
{
ViewData["MDLno"] = new SelectList(CRMSearchReportDL.getAllMDLno(), "Request_For_Id", "Request_For_Id");
return View();
}
[HttpPost]
public ActionResult MDLNoDDLIndex(CRM_Doctor_Request model)
{
ViewData["MDLno"] = new SelectList(CRMSearchReportDL.getAllMDLno(), "Request_For_Id", "Request_For_Id");
//mdlnoObj = SearchMDLNoDL.getMDLData(model.Request_For_Id);
return View();
}
public ActionResult MDLNoDataList()
{
List<CRM_Doctor_Request> drlist = new List<CRM_Doctor_Request>();
return PartialView(drlist);
}
[HttpPost]
public ActionResult MDLNoDataList(CRM_Doctor_Request model)
{
return PartialView(CRMSearchReportDL.getMDLNoWiseDetails(model.Request_For_Id));
}
OriginalL'auteur IT_INFOhUb | 2013-02-13
Vous devez vous connecter pour publier un commentaire.
J'ai compilé tous mes extraits de suggestions dans le balisage qui je pense va obtenir ce dont vous avez besoin. Elle est comme suit.
S'il vous plaît garder à l'esprit que j'ai juste tapé ceci dans le bloc-notes, donc il peut avoir des erreurs de syntaxe, mais la stratégie devrait vous obtenir où vous devez être au.
NB: Nous essayons d'utiliser AJAX technique, nous ne voulons pas vraiment à la publication de la forme, parce que cela va provoquer la totalité de la page pour actualiser, par conséquent, le bouton soumettre a devenir juste un simple bouton.
Donc, notre stratégie consiste à:
Si nous voulons mettre à jour uniquement les résultats après le clic sur le bouton, puis:
Lorsque le bouton est cliqué, on va chercher la vue partielle contenant de la grille de résultats et de remplacer la totalité de l'intérieur HTML dans
#viewlist
avec le code HTML de la vue partielle.Nous n'avons pas vraiment besoin de cacher
#viewlist
. Il nous suffit de le laisser vide, ou afficher certains autres HTML qui contient le texte de notification qu'il n'y a pas de résultats, ou des instructions indiquant à l'utilisateur quoi faire.Si nous voulons mettre à jour les résultats dès que la valeur dans la liste déroulante est changé, alors:
Nous gardons le changement de gestionnaire de la liste déroulante et d'omettre le gestionnaire d'événements click pour le bouton (le bouton au total).
OriginalL'auteur Umar Farooq Khawaja
Script
Ajouter HtmlBeginForm options de HtmlBegin formulaire comme suit:
Pourriez-vous ajouter la méthode du Contrôleur codes.
ya bien sûr, le Voir, j'ai ajouté contrôleur de code côté.
J'ai édité la réponse
merci @ AliRıza Adıyahşi
OriginalL'auteur AliRıza Adıyahşi
Onclick
déclaration en html@item.CategoryName
Jquery
OriginalL'auteur Shyju Sachin
Votre
#btnclick
est unsubmit
bouton. Ainsi, lorsque vous cliquez dessus, il va provoquer une publication. C'est pourquoi l'ensemble de votre page est rafraîchissant. Modifier le type debutton
et qui permet d'arrêter l'ensemble de la page en cours d'actualisation.-- Ignore d'ici --
Deuxièmement,
#viewlist
doit être caché pour commencer, si je vous ai bien compris. Vous pouvez le faire en mettant àdisplay: none
comme suit:Puis, dans votre TestFun, lorsque vous avez besoin de montrer
#viewlist
comme suit:-- Ignore jusqu'ici --
Je pense que votre problème principal est que votre bouton est de type
submit
.Mise à jour:
Vous ne pouvez pas utiliser
$('#viewlist').load(...)
parce que le contrôleur de méthode qui retourne la vue partielle est marquée avec[HttpPost]
. Utilisez plutôt la syntaxe suivante:Mais alors que le changement de type bouton=button type="submit" alors .. pas de dossiers sont à l'obtention d'affichage.
Vous pourriez avoir besoin de faire l'appel pour aller chercher les résultats à l'aide des techniques AJAX. Je pense que vous devriez regarder à l'aide de jQuery AJAX méthodes. Vous allez charger les résultats dans le
#viewlist
en utilisant quelque chose comme$('#viewlist').load(...)
et si la charge est réussie, alors montrer par$('#viewlist').css('display', '')
;Une autre façon serait de les laisser
#viewlist
visible tout le temps, pour ignorer le bit dans ma réponse sur le masquage et l'affichage à l'aide de ladisplay: none
les styles. Commencer par montrer votre résultat vide de la grille de là-bas et de la charge du nouveau contenu dans#viewlist
dans un gestionnaire d'événements click pour#btnclick
.J'ai déjà essayé. Mais il n'y a pas de résultat satisfaisant.
OriginalL'auteur Umar Farooq Khawaja