2017-09-12 1 views
-1

côté client:Désactiver Ajax.BeginForm si l'entrée utilisateur ne correspond pas aux conditions spécifiées

@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> 

côté serveur:

[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 }); 
} 

Est-il possible de pas soumettre les données au serveur si l'entrée de l'utilisateur ne correspond pas aux conditions spécifiées? Si c'est le cas, alors comment?

Répondre

0

Je recommande d'utiliser la validation jquery (https://jqueryvalidation.org/documentation/). Cela fonctionne du côté client (navigateur). Parce que le Ajax.BeginForm fonctionne sur le côté serveur, il est impossible de le désactiver dans le côté serveur mais vous pouvez masquer l'élément DOM pour « AddClusion » en utilisant quelque chose comme:

document.getElementById('AddClusion').style.display = "none";