0

几天来一直在尝试解决此问题,但无法使其正常工作!

我有一个单选按钮列表,它确定表单的输出 - 其中一个单选按钮是下载 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 回答