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>