2017-10-29 1 views
0

Ich habe ein Razor-Formular. Hier ist der nützliche Teil des Formulars.auf Formular senden Fehler url ändert sich

<div id="forgotBox" style="display:none;" class="col-xs-12 col-md-4 col-md-offset-4 col-sm-6 col-sm-offset-3 centerit"> 
<div class="col-md-12"> 


    @using (Html.BeginForm("ForgotPassword", "Login", FormMethod.Post, new { enctype = "multipart/form-data" })) 
    { 
     @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 

     <div class="form-group"> 
      @Html.EditorFor(x => x.user, new { htmlAttributes = new { @class = "form-control", placeholder = "Email" } })<br /> 
      @Html.ValidationMessageFor(x => x.user) 
     </div> 

     if (!String.IsNullOrWhiteSpace(ViewBag.ErrorMsg)) 
     { 
      <div class="form-group field-validation-error"> 
       @ViewBag.ErrorMsg 
      </div> 
     } 
     <div class="form-group"> 
      <input type="submit" class="btn btn-primary" /> 
     </div> 
    } 

    <div><a href="javascript:showLogin();">Login</a></div> 
</div> 

Hier ist die Controller-Methode ruft:

[HttpPost] 
    public ActionResult ResetPassword(LoginViewModel vm) 
    { 
      ViewBag.ErrorMsg = ""; 
      if (vm.confirmpass != vm.newPass) 
      { 
       //some error condition 
       ViewBag.ErrorMsg = "Passwords do not match."; 
      } else if (!String.IsNullOrWhiteSpace(vm.user)){ 
       //code here for when you want to process when we have the userID 
      } 


      return View("ForgotPassword", vm); 
     } 

    } 
} 

Die URL, wenn der Benutzer auf dieser Seite bekommt ist example.org/login?user=123

Nach den return View("ForgotPassword", vm); der URL-Änderungen

example.org/login/ForgotPassword 

Ich möchte, dass es example.org/login?user=123 bleibt, da die Seite nicht erfolgreich übermittelt wurde und die URL-Parameter verwendet werden.

Antwort

0

Sie können den Querystring-Wert für Benutzer als Routenwerte übergeben.

Wenn der Razor diesen Code ausführt, wird das Formular-Tag mit einem Querystring gerendert, der den Benutzerschlüssel und den Wert enthält.

<form action="/Login/ResetPassword?user=123" method="post"> 

</form> 

Eine weitere Möglichkeit ist es, die User-Eigenschaft Ihrer Ansicht Modell in der GET-Aktion-Methode zu setzen und der Helfer wird das Eingangselement mit dem Wert auf diesen Wert gesetzt generieren und wenn Sie legt ihn zu schreiben und wenn Ihr Code Rückkehr In die Ansicht wird der Wert angezeigt. (Sie werden es nicht in der Querystring haben, aber es wird in der Anfrage Körper sein, wenn das Formular gesendet wird.

+0

sagst du ich werde loswerden der 'neuen {enctype =" multipart/form-data "})) ' – codeNinja

+0

Warum brauchst du das? Sie benötigen dieses Attribut, wenn Sie eine Datei senden möchten (Datei-Upload) – Shyju

Verwandte Themen