如果用户输入不符合指定条件,则禁用 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";