现在试图解决这个问题几天,但是无法让它发挥作用!
我有一个单选按钮列表,用于确定表单的输出 - 其中一个单选按钮用于下载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的新手,所以我可能在这里做一些愚蠢的事情 - 任何帮助都很受欢迎。我得到的错误是,当我选择单选按钮并且不在文本框中输入任何内容时“输入字符串的格式不正确”。很明显,验证没有解决 - 无法弄清楚原因。
答案 0 :(得分:2)
之所以没有进行验证是因为您的模型没有实现IValidatable Object。
e.g. public class MyClass:IValidatableObject
如果这对你有用,请告诉我。我能够让上面的代码在本地工作,如果它仍然不适合你,可以发送代码。