挣扎于条件验证MVC 3

时间:2012-06-08 17:28:39

标签: c# asp.net-mvc validation

现在试图解决这个问题几天,但是无法让它发挥作用!

我有一个单选按钮列表,用于确定表单的输出 - 其中一个单选按钮用于下载X个文件。此单选按钮有一个文本框,供用户输入他们希望下载的金额(X)。

我只需要这个文本框来验证是否选中了与它对应的单选按钮 - 这是我到目前为止所做的但是无法使其工作。任何帮助都会得到满足。

MODEL

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.");
       }

}

CONTROLLER

    [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的新手,所以我可能在这里做一些愚蠢的事情 - 任何帮助都很受欢迎。我得到的错误是,当我选择单选按钮并且不在文本框中输入任何内容时“输入字符串的格式不正确”。很明显,验证没有解决 - 无法弄清楚原因。

1 个答案:

答案 0 :(得分:2)

之所以没有进行验证是因为您的模型没有实现IValidatable Object。

  e.g. public class MyClass:IValidatableObject

如果这对你有用,请告诉我。我能够让上面的代码在本地工作,如果它仍然不适合你,可以发送代码。