在这种情况下是否可以验证文本框?此TextBox(@Html.TextBoxFor(model => model.FirstSetList[i].Amount)
)中的值必须可以被另一个值整除 - 在这种情况下为包(@Html.DisplayFor(model => model.FirstSetList[i].Pack)
)。
我尝试使用Fluent验证,但客户端验证存在问题。也许它可以在没有流畅验证的情况下完成。只有基本的DataAnnotation?
以下是代码:
@model FP.WebUI.ViewModels.DataItemVm
<h3>
What kind of currencies you currently own?
</h3>
<br />
<div>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.FirstSetList.FirstOrDefault().Name)
</th>
<th>
@Html.DisplayNameFor(model => model.FirstSetList.FirstOrDefault().Pack)
</th>
<th>
@Html.DisplayNameFor(model => model.FirstSetList.FirstOrDefault().Amount)
</th>
</tr>
@using (Html.BeginForm())
{
for (var i = 0; i < Model.FirstSetList.Count; i++)
{
<tr>
<td>
@Html.DisplayFor(model => model.FirstSetList[i].Name)
@Html.HiddenFor(model => model.FirstSetList[i].Name)
</td>
<td>
@Html.DisplayFor(model => model.FirstSetList[i].Pack)
@Html.HiddenFor(model => model.FirstSetList[i].Pack)
</td>
<td>
@Html.TextBoxFor(model => model.FirstSetList[i].Amount)
</td>
</tr>
}
<input type="submit" value="Confirm" class="btn btn-success" />
}
</table>
</div>
更新 我试图使用远程注释,但是chrome并没有向我的JsonResult方法发送任何信息,我也不知道为什么。
我的ViewModel:
.
.
.
[Remote("Divisibility", "Account", HttpMethod = "POST", ErrorMessage = "Value is incorrect.")]
public int Amount { get; set; }
.
.
.
我的观点:
.
.
.
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
@using (Html.BeginForm())
{
for (var i = 0; i < Model.FirstSetList.Count; i++)
{
<tr>
<td>
@Html.DisplayFor(model => model.FirstSetList[i].Name)
@Html.HiddenFor(model => model.FirstSetList[i].Name)
</td>
<td>
@Html.DisplayFor(model => model.FirstSetList[i].Pack)
@Html.HiddenFor(model => model.FirstSetList[i].Pack)
</td>
<td>
@Html.TextBoxFor(model => model.FirstSetList[i].Amount)
@Html.ValidationMessageFor(model => model.FirstSetList[i].Amount)
</td>
</tr>
}
<input type="submit" value="Confirm" class="btn btn-success" />
}
</table>
</div>
我的控制器:
[HttpPost]
public JsonResult Divisibility(int valueToCheck)
{
var value = User.Identity.GetUserId().Where(x => x.Equals("qqqqq"));
//I know that this condition does not make sense, but this was only for test.
//Anyway like i said, chrome doesn't send anything to this method.
return Json(value == null);
}
答案 0 :(得分:0)
更长的解决方案,也许更好的方法是使用MVC正在使用的相同验证器在javascript中创建自己的验证器。但是,对于其他人提到的东西,服务器端验证。将DataAnnotations与Remote属性一起使用,您也可以完成相同的操作。
您将创建一个服务器方法来进行验证,但前端将调用它。我提供的链接应该为您提供所需的一切。