0

数日間これを修正しようとしてきましたが、うまくいきません!

フォームの出力を決定するラジオ ボタン リストがあります。ラジオ ボタンの 1 つは、X 個のファイルをダウンロードすることです。このラジオ ボタンには、ユーザーがダウンロードする量 (X) を入力するためのテキスト ボックスがあります。

それに対応するラジオボタンが選択されているかどうかを検証するために、このテキストボックスのみが必要です-これは私がこれまで持っていたものですが、機能させることができません。どんな助けでも感謝します。

モデル

public class myClass

{
       [Required(ErrorMessage = "Please select the type of output you wish to generate")]
       public int providerType { set; get; }


       public int? numOutput { set; get; }


       public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
       {
           if (providerType == 2 && numOutput == null)
               yield return new ValidationResult("Description must be supplied.");
       }

}

コントローラ

    [AcceptVerbs(HttpVerbs.Post)]
    [HttpPost, ValidateInput(false)]
    public ActionResult Spin(myClass theData)

    {

        int? ProviderType = Convert.ToInt16(Request.Form["providerType"]);

        if (ModelState.IsValid)
        {

            //other random processing

        }

    }

見る

   <ul>
<li>
  <%=Html.RadioButton("ProviderType","1")%><label>Output A Single Article (With Visible HTML Tags)</label>
 </li>
 <li>
  <%=Html.RadioButton("ProviderType","4")%><label>Output A Single Article (With HTML Pre Rendered - Not Recommended For Articles With Videos)</label>
 </li>
  <li>
  <%=Html.RadioButton("ProviderType", "3")%><label>Output For Mass Submission</label> 
  </li>

 <li>
  <%=Html.RadioButton("ProviderType", "2")%><label>Download Several Copies Of Article (With Visible HTML Tags)</label>
 How Many Artilces (Max 20) 

            <%= Html.TextBoxFor(Model => Model.numOutput)%>
             <%= Html.ValidationMessageFor(Model => Model.numOutput)%>

私はまだMVCに慣れていないので、おそらくここで何かばかげたことをしているでしょう-どんな助けも大いに感謝しています。ラジオボタンを選択してテキストボックスに何も入力しないと、「入力文字列が正しい形式ではありませんでした」というエラーが表示されます。したがって、明らかに検証が実行されていません-理由がまったくわかりません。

4

1 に答える 1

2

検証にヒットしない理由は、モデルが IValidatable オブジェクトを実装していないためです。

  e.g. public class MyClass:IValidatableObject

それがうまくいくかどうか教えてください。上記のコードをローカルで動作させることができました。それでも動作しない場合は、コードを送信できます。

于 2012-07-18T18:46:06.617 に答える