Quel devrait être un problème simple me résout pour une raison quelconque. Je suis nouveau à MVC afin que cela puisse expliquer cela.
J'essaie d'effacer tous les champs sur une page après la saisie d'une soumission. P>
J'ai vu le code ci-dessous utilisé dans des exemples mais ne savez pas où le mettre. Je l'ai essayé dans ma personneModel.vb et ça jette des erreurs. Je l'ai essayé dans mon référentiel où je conserve mes sous-marins et mes fonctions et cela jette des erreurs à chaque fois sur le mot modélisme et la valeurProvierresult. P>
<HttpPost(), MvcReCaptcha.CaptchaValidator()> _ Function Nominate(ByVal m As NominationModel, ByVal captchaValid As Boolean) As ActionResult Dim db = New ChampionTrees.Common.DataAccess.ChampionTreesRepository With {.UserName = "SYSTEM"} BindNominateDdls(db) Dim addPost As Boolean = False If (Request.Form("addNominator") <> Nothing) Then m.People.Add(New PersonModel With {.Indicator = PersonIndicator.Nominator}) addPost = True ElseIf Request.Form("addOwner") <> Nothing Then m.People.Add(New PersonModel With {.Indicator = PersonIndicator.Owner}) addPost = True Else For Each f In Request.Form.Keys If f.ToString.StartsWith("deletePerson") Then Dim idx = f.ToString.IndexOf("n") m.People.RemoveAt(Integer.Parse(f.ToString.Substring(idx + 1, f.ToString.Length - (idx + 1)))) addPost = True Exit For End If Next End If If addPost Then For Each v In ModelState.Values.AsEnumerable() v.Errors.Clear() Next Return View(m) End If If m.Tree.Id < 0 AndAlso String.IsNullOrEmpty(m.OtherName) Then Dim err As String = "Either a Common, Scientific, or Other Name must be provided." ModelState.AddModelError("Tree.Id", err) ModelState.AddModelError("OtherName", err) End If If String.IsNullOrEmpty(m.Measurement.CountyForester) = _ String.IsNullOrEmpty(m.Measurement.OtherCountyForester) Then Dim err As String = "A County Forester must be selected or entered (but not both)." ModelState.AddModelError("Measurement.CountyForester", err) ModelState.AddModelError("Measurement.OtherCountyForester", err) End If Dim i As Integer = 0 For Each p As PersonModel In m.People If String.IsNullOrEmpty(p.EmailAddress) AndAlso _ (p.Phone.Phone1 Is Nothing Or p.Phone.Phone2 Is Nothing Or p.Phone.Phone3 Is Nothing) Then ModelState.AddModelError(String.Format("People[{0}].Phone", i), "Either an E-mail Address or Phone number must be provided.") ModelState.AddModelError(String.Format("People[{0}].Phone.Phone1", i), "") ModelState.AddModelError(String.Format("People[{0}].Phone.Phone2", i), "") ModelState.AddModelError(String.Format("People[{0}].Phone.Phone3", i), "") ModelState.AddModelError(String.Format("People[{0}].EmailAddress", i), " ") Else Dim int As Integer = 0 Dim err As Boolean = False If Not p.Phone.Phone1 Is Nothing AndAlso _ (p.Phone.Phone1.Length <> 3 Or Not Integer.TryParse(p.Phone.Phone1, Int)) Then ModelState.AddModelError(String.Format("People[{0}].Phone.Phone1", i), "") err = True End If If Not p.Phone.Phone2 Is Nothing AndAlso _ (p.Phone.Phone2.Length <> 3 Or Not Integer.TryParse(p.Phone.Phone2, int)) Then ModelState.AddModelError(String.Format("People[{0}].Phone.Phone2", i), "") err = True End If If Not p.Phone.Phone3 Is Nothing AndAlso _ (p.Phone.Phone3.Length <> 4 Or Not Integer.TryParse(p.Phone.Phone3, int)) Then ModelState.AddModelError(String.Format("People[{0}].Phone.Phone3", i), "") err = True End If If err Then ModelState.AddModelError(String.Format("People[{0}].Phone", i), "Phone Number is not numeric.") End If If m.OwnershipType = Ownership.Public AndAlso _ p.Indicator = PersonIndicator.Owner AndAlso _ p.ParcelName Is Nothing Then ModelState.AddModelError(String.Format("People[{0}].ParcelName", i), "The Parcel Name field is required for public nominations.") End If i += 1 Next If Not m.UseNominatorsAsOwners AndAlso _ (From e In m.People Where e.Indicator = PersonIndicator.Owner Select e).Count = 0 Then ModelState.AddModelError("UseNominatorsAsOwners", "At least one Owner is required.") End If If Files.Count > 0 AndAlso Not m.ElectronicUseAgreement Then ModelState.AddModelError("ElectronicUseAgreement", "The Electronic Use Agreement must be agreed to.") End If If Not captchaValid Then ModelState.AddModelError("ReCaptcha", "You did not type the verification word correctly. Please try again.") End If If ModelState.IsValid Then ' load our uploads from session For Each f In Files f.Value.Viewable = m.ElectronicUseAgreement m.Uploads.Add(f.Value) Next ' insert the nomination into the db db.InsertNomination(m) ViewData("message") = "Nomination has been submitted" End If ModelState.Clear() Return View(m)
4 Réponses :
hi vous devriez être capable d'utiliser: EDIT: P> Voici Quelque exemple de code: p> update 2: p> Dans votre code, vous effacez le modèle de modèle, mais vous passez le modèle (vous l'avez appelé m) Retour à votre vue et votre vue choisit ensuite ce modèle et affiche ses propriétés. P> Si, par exemple, j'ai une page qui a accepté un prénom et un nom de famille et quand je poste je veux ajouter ceci à un Base de données, mais renvoie ensuite la même vue mais vide pour ma prochaine demande, mon code ressemblerait à quelque chose comme: p> modelstate.clear () code> et lorsque vous retournez l'affichage Toutes les données saisies précédentes seront effacées.
Quand j'essaie de dire qu'il est dit "modelstate" n'est pas déclaré. Où devrais-je utiliser ce code?
Je l'ai même essayé sur la page ASPX et il est dit qu'il n'y a pas de méthode claire () pour modélistate ......
J'ai mis à jour avec un exemple de code - si vous ne comprenez toujours pas, pouvez-vous publier votre code. Merci
Je l'ai eu pour accepter ModelState.clear (). J'avais besoin d'ajouter à l'importation, mais cela n'a pas effacé le formulaire. Rien n'a changé.
Pouvez-vous publier vos contrôleurs / actions s'il vous plaît.
Voici quelques échantillons de ce que j'ai .......................................... si modélistate.isvalid alors "charge notre Télécharge de la session pour chaque F dans les fichiers F.Value.Vueillette = M.ElectronicuseAgreement m.OnectronicuseAgreement m.euploads.Ajouter (F.Value) Suivant db.insernomination (m) ViewData ("Message") = "La nomination a été soumise" fini si modélistate .Clear () Vue de retour (M)
Le code que j'ai énuméré ci-dessus est à l'intérieur d'un sous-bas où j'insère certaines données dans la base de données. Je ne pouvais que lister une partie du sous à cause des limites de l'espace ici ...
Il suffit de modifier votre question originale avec le code. Vous devriez faire modelstate.clear () dans votre résultat d'action avant de retourner votre vue.
Ça l'a eu. Je suppose que je n'avais pas besoin d'envoyer le "M" dans l'appel à la vue. J'apprécie vraiment votre aide. Merci.
est-il possible que vous puissiez utiliser jQuery et faire quelque chose comme et peut-être peut-être que dans une sorte de type de rasoir posté. p> p>
Je me suis demandé à propos de JQuery ... N'a pas encore essayé ça. J'ai envisagé du code dans l'événement surload de la page, mais pas sûr de pouvoir le faire avec MVC.
ou si le modèle de modèle était valide, vous pouvez simplement rediriger pour obtenir une action comme celle-ci:
public ActionResult Index() { return View(); } [HttpPost] public ActionResult Index(Person p) { if (ModelState.IsValid) { // do work and finally back to Get Action return RedirectToAction("Index"); } return View(p); }
modelstate.clear () code> n'a pas fonctionné pour moi. Mais cela a fait.
Merci, c'est résolu mon problème RedirectToaction ("index") au lieu de la vue ();
dans jQuery modelstate.clear () code> après une soumission réussie p> p>