1

私は、ユーザーが忘れたパスワードを取得することを可能にする複数のステップのプロセスを持っています。手順は、私のコントローラの各ステップごとに異なるアクションで、そのようなものです:手動でjQueryの邪魔にならない検証asp.netを使ってテキストボックスを手動で検証するMVC3

  1. がパスワードの質問の答えを入力し、ユーザ名とメールアドレスを入力し
  2. メールユーザーへの回復のリンクはすべてがうまく
  3. になった場合

は、私はすべてのための一つのモデルを使用してみました:

public class AccountForgotPassword 
{ 

    [Required()] 
    [DisplayName("Username")] 
    public string UserName { get; set; } 

    [Required()] 
    public string Email { get; set; } 

    [Required()] 
    public string PasswordAnswer { get; set; } 

} 

しかし、私はにModelStateをチェックするとき.IsValidは最初のアクションでは、ユーザーはまだパスワードの回答の質問を入力できないので、常にfalseになり、モデル状態が実際に有効であることを確認するいくつかの興味深いコードが作成されますが、ユーザーがまだ誰であるかわからない。

これを回避するには、型付きモデルを忘れて、自分のアクションで文字列パラメータを使用することにしました。今問題は、モデルバインディングで得られる簡単な検証用ワイヤーを使用できなくなることだけです。

これまで述べてきたように、jQueryの検証を個々の入力に手動で接続して、必要なルールをチェックする簡単な方法を知っている人はいますか?また、この配線によって、バリデータが生成するデフォルトのエラーメッセージを使用することができますか、それとも配線時に自分自身で供給しなければなりませんか?それが私の見解では、これは簡単に次のようになります。これを行うには良い方法があるかどう

@{ 
    ViewBag.Title = "Forgot Password"; 
} 
<h2> 
    Forgot Password</h2> 
@using (Html.BeginForm()) 
{ 
    <p> 
     @Html.Label("UserName", "Username") 
     @Html.TextBox("UserName") 
     @Html.ValidationMessage("UserName") 
    </p> 

    <p> 
     @Html.Label("Email", "Email") 
     @Html.TextBox("Email") 
     @Html.ValidationMessage("Email") 
    </p> 

    <p> 
     <input type="submit" value="Send Form" /> 
    </p> 
} 

<script type="text/javascript"> 
    $.validator.unobtrusive.addRule(..something here...); 
</script> 

また、私に知らせてください。前もって感謝します。これを見つけた他の誰のために


UPDATE

、私は手動でルールを追加する方法を見つけ出すんでした。検証文書を最初に読んだだけでよいでしょう。上記のビューのHTMLを想定すると、スクリプトは次のようになります。

<script type="text/javascript"> 
    $(function() { 
     $('#UserName').rules('add', { 
      required: true, 
      messages: { 
       required: 'The username field is required.' 
      } 
     }); 

     $('#Email').rules('add', { 
      required: true, 
      messages: { 
       required: 'The email field is required.' 
      } 
     }); 

     $.validator.unobtrusvie.parse('form'); 
    }); 
</script> 

しかし、いくつかのより多くのことを考えると、アカウントにAFinkelsteinの答えを取った後、私はちょうど先に行くと、2つの異なるビューモデルを作成し、フレームワークをできるようになると思います私のために仕事をしなさい。

答えて

2

ユーザー名とパスワードだけを確認してから、パスワードの回答を次に確認すると、最も簡単な解決策は、2つのビューモデルを別々にすることです。それでも、適切なビューモデルと各セクションの検証を使用できます。

+0

これは私の考えでは最初ですが、ちょうど1つのパラメータのビューモデルを持つのはちょっとばかばかしいようです。しかし、同時に、検証作業をするためにフープを飛び越えるほど面白くないかもしれません。 – ryanulit

+0

jqueryを使用して手動で入力に生成される属性を挿入することで、検証することは可能です。しかし、あなたのビューモデルが1つの入力しか持っていなければ、1つの入力だけでView Modelを作るのは完全に妥当だと思います。特に代替案には、はるかに多くの作業、ハードコーディング、本当に一緒に属していない入力の組み合わせが必要な場合。 – DMulligan

+0

2つのビューモデルが今、私にとって最も理にかなっています。ご協力いただきありがとうございます。 +1 – ryanulit

関連する問題