2017-06-02 67 views
2

我填充使用jQuery Ajax和JSON數據選擇選項及其工作正常,但是當我點擊提交按鈕,我的期權價值變爲零。這裏是我的代碼:的ASP.NET MVC:填充選擇選項與阿賈克斯

查看:

@using (Html.BeginForm("Index", "Teste", FormMethod.Post)) 
{ 
@Html.AntiForgeryToken() 
<div class="row"> 
    <div class="col-md-8"> 
     Data Agendamento 
    </div> 
    <div class="col-md-8"> 
     @Html.TextBox("DataAgendamento", null, new { @onchange = "horarios();" }) 
    </div> 
    <div class="col-md-8"> 
     Hora Agendamento 
    </div> 
    <div class="col-md-8"> 
     <select id="HoraAgendamento" name="HoraAgendamento"></select> 
    </div> 
    <input type="submit" value="Enviar" class="btn btn-default" /> 
</div> 
} 
<script> 
    function horarios() { 
     var Dia = $('#DataAgendamento').val(); 
     $.ajax({ 
      url: '/Teste/Popula', 
      type: "GET", 
      dataType: "JSON", 
      data: { dia: Dia }, 
      success: function (horarios) { 
       $("#HoraAgendamento").html(""); 
       $.each(horarios, function (i, hora) { 
        console.log(i); 
        console.log(hora.Hora); 
        $("#HoraAgendamento").append(
         $('<option></option>').val(hora.Id).text(hora.Hora)); 
       }); 
      } 
     }); 
    } 
</script> 

我的控制器(直到問題發生)

[HttpPost] 
    public ActionResult Index(FormCollection form) 
    { 

     string dt_data; 
     dt_data = form["DataAgendamento"] + " " + form["HoraAgendamento"]; 

問題是我收到的形式[ 「HoraAgendamento」]爲空。

+0

你得到的選擇使用檢查元素 – Saravanan

+0

您正在使用VAR直徑= $(「#DataAgendamento」)開發者工具檢查時填寫VAL()。獲得價值。但是你沒有指定文本框的ID。@ Html.TextBox( 「名」,新{ID = 「名稱」},{新@class = 「TEXT-場」}) –

+0

@KateFernando ID和名稱會由mvc框架分配,這不是這裏所關心的 – Krishna

回答

0

這是一個奇怪的解決方案,但它的工作現在。

我剛纔在我的JavaScript取代hora.Id通過hora.Hora爲波紋管

老一:

$('<option></option>').val(hora.Id).text(hora.Hora)); 

新:

$('<option></option>').val(hora.Hora).text(hora.Hora)); 

謝謝大家。

0

嘗試用代碼

string dt_data = Request.Form["DataAgendamento"].ToString() + " " + Request.Form["HoraAgendamento"].ToString(); 
+0

儘管此代碼可以回答這個問題,提供了關於如何和/或爲什麼它解決了這個問題將改善答案的長期價值附加的上下文。 – Badacadabra

0

我沒有看到一個原因,你會得到該值作爲空。我試着做你正在做的事情,我可以完美地獲得這個價值。請參閱下面我所做的:

<script src="~/Scripts/jquery-3.1.1.min.js"></script> 
<script> 
    function horarios() { 

    var Dia = $('#DataAgendamento').val(); 
    $.ajax({ 
     url: '@Url.Action("Popula")', 
     type: "GET", 
     dataType: "JSON", 
     data: { dia: Dia }, 
     success: function (horarios) { 

      $("#HoraAgendamento").html(""); 
      $.each(horarios, function (i, hora) { 
       console.log(i); 
       console.log(hora.Hora); 
       $("#HoraAgendamento").append(
        $('<option></option>').val(hora.Id).text(hora.Hora)); 
      }); 
     } 
    }); 
} 
</script> 

@using (Html.BeginForm("Index1", "Home", FormMethod.Post)) 
{ 
    @Html.AntiForgeryToken() 
    <div class="row"> 
     <div class="col-md-8"> 
      Data Agendamento 
     </div> 
     <div class="col-md-8"> 
      @Html.TextBox("DataAgendamento", null, new { @onchange = "horarios();" }) 
     </div> 
     <div class="col-md-8"> 
      Hora Agendamento 
     </div> 
     <div class="col-md-8"> 
      <select id="HoraAgendamento" name="HoraAgendamento"></select> 
     </div> 
     <input type="submit" value="Enviar" class="btn btn-default" /> 
    </div> 
} 
    public JsonResult Popula(string dia) 
    { 
     var obj = new { Id = 1, Hora = "Drop down" }; 
     var obj1 = new { Id = 2, Hora = "Drop down 2" }; 
     List<Object> ob = new List<object>(); 
     ob.Add(obj); 
     ob.Add(obj1); 
     return Json(ob, JsonRequestBehavior.AllowGet); 
    } 

    public ActionResult Index1(FormCollection form) 
    { 
     string dt_data; 
     dt_data = form["DataAgendamento"] + " " + form["HoraAgendamento"]; 

     return View(); 
    } 

而結果:

enter image description here

我的建議是檢查ID的值是否正確,從Popula()通過。