2016-11-23 5 views
0

Ich habe eine Dropdownliste aus einem Viewbag und ich brauche es wie "Required"Validate Required auf Non Modell MVC Dropdownliste

mein Controller

public ActionResult EsperaPorHora() 
     { 
      var cliente = new UsuarioData().Id_LicenciadoPorId(User.Identity.GetUserId()); 
      var Cli = !string.IsNullOrEmpty(cliente.ToString()) ? Convert.ToInt32(cliente) : 0; 
      var cliData = new LicenciadoData(); 
      var agora = DateTime.Now; 
      ViewBag.Data1 = agora.ToShortDateString(); 
      ViewBag.Data2 = agora.ToShortDateString(); 

      if (Cli != 0) 
      { 
       ViewBag.IdCliente = new SelectList(cliData.ListaClienteId(Cli), "Id", "Fantasia"); 
      } 
      else 
      { 
       ViewBag.IdCliente = new SelectList(cliData.ListarClientes(), "Id", "Fantasia"); 
      }   
      return View(); 
     } 

     [HttpGet] 
     public JsonResult EsperaHora(string data1, string data2, int? cliente) 
     { 
      var voiceData = new KiperVoiceData(cliente); 
      var media = voiceData.GetEsperaData(data1, data2); 
      var atend = voiceData.GetEsperaHora(data1, data2); 

      var result = new { atend, media }; 
      return Json(result, JsonRequestBehavior.AllowGet); 
     } 

Ich habe versucht, zu überprüfen:

@Html.DropDownList("IdCliente", null, "SELECIONE A EMPRESA", htmlAttributes: new { @class = "form-control combo2", @required = "required" })        

@Html.DropDownList("IdCliente", null, "SELECIONE A EMPRESA", htmlAttributes: new { @class = "form-control combo2", @required = true })        

@Html.DropDownList("IdCliente", null, "SELECIONE A EMPRESA", htmlAttributes: new { @class = "form-control combo2", required = true }) 

Aber niemand hat mir geholfen, wenn ich auf den Button klicke ohne es zu einer Ausnahme laufen zu lassen. Was mache ich falsch?

+1

können Sie nicht Validierung erhalten, wenn Ihr nicht bindend ein Model!. Sie müssen an eine Modelleigenschaft binden (mit einem '[Required]' - Attribut, und der Name der 'SelectList' darf nicht mit dem Namen der Eigenschaft, an die Sie binden, identisch sein. Und dann muss der Parameter in der POST-Methode bin das Modell –

+0

Mein Dropdown wird von einer Liste gefüllt, wie ich es an ein Modell binden könnte? Neuling hier ... Konnte ich aa js Überprüfung tun? –

+0

'@ Html.DropDownListFor (m> m.PropertyToBindTo, Model.YouSelectList , "SELECIONE A EMPRESA", neu {@class = "form-control combo2"}) ' –

Antwort

1

Senden als Klasse die erforderliche wie folgt aus:

aktualisieren

Verwenden Sie eine Überlastung mit option. Ich gebe "wählen" hier, aber Sie können alles passieren, was Sie brauchen. Fügen Sie außerdem eine Validierungszusammenfassung hinzu, um den Benutzer darüber zu informieren, dass es sich um ein erforderliches Feld handelt.

+0

Ich habe versucht, wie Sie vorgeschlagen, aber es funktioniert nicht, wenn ich auf den Button zum POST klicken rufe zu einer Ausnahme auf, weil die Variable NULL ist, und ich denke, die beste Lösung für mich ist, null auf JS zu validieren. Ich werde versuchen und es dir später sagen. –

+0

Es funktioniert. Kopiere und füge meinen Code ein und du wirst sehen, dass es funktioniert Code ist diffdrent denke ich. – CodingYoshi

+0

Ich kopiere es einfach und füge es in mein Projekt ein und ich denke, es wird funktionieren, mit deinem Drop-Down-Menü lief es nicht zu einer Ausnahme. Ich werde versuchen, die Auswahlliste aus meinem Viewbag zu holen und die Validierung zu erstellen. Vielen Dank! Hast du die Lösung gefunden, die ich gefunden habe? –

0

Lösen Sie die Situation auf HTML und Rasiermesser ist wichtig, in erster Linie, um mein Wissen zu verbessern. Wie ich oben gesagt, ich habe eine Lösung mit Js und eine Komponente namens Süße Benachrichtigung wie folgt gefunden:

var data1 = $('#data1').val(); 
var data2 = $('#data2').val(); 
var cliente = $('#IdCliente option:selected').val(); 

if (cliente != "") { 

      $.ajax({ 
       url: '', 
       dataType: "json", 
       type: "GET", 
       data: { 'data1': data1, 'data2': data2, 'cliente': cliente }, 
       success: function (data) { 
        } 
       }, 

       error: function (xhr) { 
        alert('error'); 
       } 
      }); 
     } 
     else { 
      swal({ type: "warning", title: "Alerta", text: "Selecione uma empresa por favor!", timer: 5000, showConfirmButton: true }); 
     } 

Dies ist das Ergebnis:

Alert Sweet

+0

Diese Lösung ist in Ordnung, aber in der Web-Welt wird dies selten getan. In der Web-Welt wird der Fehler neben dem erforderlichen Feld angezeigt und/oder eine Zusammenfassung wird am oberen Rand des Formulars angezeigt. Wenn Sie beispielsweise bei stackoverlow, gmail und den meisten anderen Websites bei der Anmeldung die Felder beim Anmelden oder beim Erstellen eines Kontos nicht ausfüllen, wird kein Dialogfeld angezeigt. Wenn Ihre Website von einem Smartphone aus besucht wird, ist es noch unangenehmer, eine Warnung zu sehen. – CodingYoshi

Verwandte Themen