如果用户输入不符合指定条件,则禁用 Ajax.BeginForm
Disable Ajax.BeginForm if user input does not match the specified conditions
客户端:
@using (Ajax.BeginForm("AddClusion", clusionOptions))
{
@Html.TextArea("clusionValue", new { onkeyup = "SyncContents(); return false;" })
<input type="submit" value="Add" onclick="ValidateInput(); ClearDirtyFlag(['clusionValue']);" />
}
<script>
function ValidateInput()
{
if (@Html.Raw(Json.Encode(Model.Name)) === "CheckII" &&
$("#clusionType").val() !== "EcuMnemonic" &&
$("#clusionValue").val().length > 10)
{
//do not submit data to the server.
}
}
</script>
服务器端:
[Transactional]
public JsonResult AddClusion(Guid id, ClusionType clusionType, string clusionValue, bool isInclusion)
{
var product = NonDiagnosticRepository.Product(id);
product.AddClusion(new ProductClusion { Type = clusionType, Value = clusionValue, IsInclusion = isInclusion, ProductId = id });
return Json(new { success = true });
}
如果用户输入不符合指定条件,是否可以不向服务器提交数据?如果是,那怎么办?
我建议使用 jquery 验证 (https://jqueryvalidation.org/documentation/)。这适用于客户端(浏览器)端。因为 Ajax.BeginForm 在服务器端运行,所以无法在服务器端禁用它,但是您可以使用类似以下内容隐藏 "AddClusion" 的 DOM 元素:
document.getElementById('AddClusion').style.display = "none";
客户端:
@using (Ajax.BeginForm("AddClusion", clusionOptions))
{
@Html.TextArea("clusionValue", new { onkeyup = "SyncContents(); return false;" })
<input type="submit" value="Add" onclick="ValidateInput(); ClearDirtyFlag(['clusionValue']);" />
}
<script>
function ValidateInput()
{
if (@Html.Raw(Json.Encode(Model.Name)) === "CheckII" &&
$("#clusionType").val() !== "EcuMnemonic" &&
$("#clusionValue").val().length > 10)
{
//do not submit data to the server.
}
}
</script>
服务器端:
[Transactional]
public JsonResult AddClusion(Guid id, ClusionType clusionType, string clusionValue, bool isInclusion)
{
var product = NonDiagnosticRepository.Product(id);
product.AddClusion(new ProductClusion { Type = clusionType, Value = clusionValue, IsInclusion = isInclusion, ProductId = id });
return Json(new { success = true });
}
如果用户输入不符合指定条件,是否可以不向服务器提交数据?如果是,那怎么办?
我建议使用 jquery 验证 (https://jqueryvalidation.org/documentation/)。这适用于客户端(浏览器)端。因为 Ajax.BeginForm 在服务器端运行,所以无法在服务器端禁用它,但是您可以使用类似以下内容隐藏 "AddClusion" 的 DOM 元素:
document.getElementById('AddClusion').style.display = "none";