我有一个看起来像这样的窗口 -
每当我点击' +'它在下面添加了一行 -
和' - '删除该行。
正如您所看到的,该字段未经过验证,即使未输入任何内容,也会添加该行。我编写的代码分布在两个文件中。
InviteUser.cshtml
@using (Ajax.BeginForm("AddUser", "ManageUsers", new { area = "AccountAdmin" }, new AjaxOptions() { HttpMethod = "POST", OnFailure = "onCallFailure(data);", OnSuccess = "onCallSuccess(data);", UpdateTargetId = "inviteUserContainer" }, new { id = "form1" }))
{
<div id="items">
@{
if (Model != null)
{
foreach (var item in Model)
{
Html.RenderPartial("inviteUserEditor", item);
}
}
else
{
Html.RenderAction("BlankInviteUserEditor", "ManageUsers", new { area = "AccountAdmin" });
}
}
</div>
此文件运行循环和
InviteUSerEditor.cshtml
<div class="rowcontainer7">
<input type="hidden" name="@(ViewData["prefix"] + ".index" )" value="@(model.Id )" />
@Html.Hidden((string)(fieldPrefix + "Id"), (int)ViewData.Model.Id)
@Html.TextBox(((string)fieldPrefix + "Email"), (string)ViewData.Model.Email, new { @class = "form-control vsminput3 " + (string.IsNullOrEmpty(model.Message) ? "" : "input-validation-error"), placeholder ="Email" })
@Html.DropDownList((string)(fieldPrefix + "GroupId"), model.Groups.Select(x => new SelectListItem() { Value = x.Id.ToString(), Text = x.GroupName, Selected = (model.GroupId == x.Id) }),"--Select Group--", new { @class = "form-control vsmselect3 vsminline2" })
<a href="#" class="removeRow btn btn-blue btn_inline" role="button" onclick="deleteContainer(event)"> -</a>
这具有文本框和下拉列表的基本结构。 虽然,我试着验证这个领域,但我并没有成功。如果&#39; +&#39;单击它不应该添加一行,如果没有输入或选择任何内容,文本框和下拉菜单应该变为红色,并带有一些弹出消息。
另外需要提及的是,此文本框没有创建模型。因此,我必须在客户端本身进行验证。我现在很长一段时间都在努力解决这个问题。任何帮助,将不胜感激。
答案 0 :(得分:-1)
您有两个选项,客户端和服务器端验证
客户端
$('#plusButtonId').on('click', function() {
if ($('#inputId').val() == '') {
//display error message etc..
} else {
//add new row
}
});
服务器端可以简单地检查模型状态是否有效
//for server side to kick in, you would need to be hitting the server
//i.e doing an ajax call to load a new row
if (ModelState.IsValid) {
//handle the request
}