2016-05-16 3 views
-1
<script> 
    $(document).ready(function() {     
     $("#btnPost").click(function() { 
      var sof = { 
       EndUserIp: "192.168.10.10", 
       TokenId: $("#pageInitCounter").val(), 
       AdultCount: $("#AdultCount").val(), 
       ChildCount: $("#ChildCount").val(), 
       InfantCount: $("#InfantCount").val(), 
       DirectFlight: "false", 
       OneStopFlight: "false", 
       JourneyType: $("#JourneyType :selected").text(), 
       PreferredAirlines: null,   
      } 
      alert(JSON.stringify(sof)); 
      $.ajax(
       { 
        url: "/api/Flight/SearchFlight", 
        type: "Post", 
        contentType: "application/json", 
        data: JSON.stringify(sof), 
        success: function (result) { 
         alert(result); 
        } 
       });   
     }); 
    }); 
    </script> 

Это простой код в Script tage.There является JSON объект array.I назвали его sof.I я инициализация значения для каждого из объектов через Id селектор на клике Событие из каждого из текстовых полей, выпадающих меню и т. д.

Теперь, когда вы видите, что после массива sof json появляется окно предупреждения.

alert(JSON.stringify(sof)); 

Он отображает точные и правильные значения независимо от того, что выбрано в раскрывающемся списке.

Но проблема возникает здесь при вызове функции $ .Ajax. Я хочу вернуть массив Json в url, указанный в функции, но когда я нахожусь над sof, это странно имеет некоторые значения из текстовых полей, но из выпадающего списка, как JourneyType, его возвращающий null.

Еще одна вещь, поскольку окно предупреждения возвращает все правильные значения. Но когда я наводил курсор на sof в поле предупреждения после закрытия окна предупреждения, я вижу, что значение текстовых полей правильное, но выпадающее значение (JourneyType) равно null здесь. Теперь, как это могло произойти, поскольку поле оповещения показало мне правильное значение выпадающего списка.

и это мой простой выпадающий:

@Html.DropDownListFor(model => model.JourneyType, Model.JourneyList, new {id = "JourneyType"}) 

Пожалуйста, кто-то сказать мне, что здесь происходит. Это полный html rendered.I скопировал код из источника.

<div class="form-group"> 
    <label class="control-label col-md-2" for="DepartmentID">Journey Type</label> 
     <div class="col-md-10"> 
      <select id="JourneyType" name="JourneyType"><option value="0">OneWay</option> 
<option value="1">Return</option> 
<option value="2">MultiStop</option> 
<option value="3">AdvanceSearch</option> 
<option value="4">SpecialReturn</option> 
</select> 
<span class="field-validation-valid text-danger" data-valmsg-for="JourneyType" data-valmsg-replace="true"></span> 
      </div> 
     </div> 

Это модель класса:

public enum JourneyType 
{ 
    OneWay, Return, MultiStop, AdvanceSearch, SpecialReturn 
} 
public enum FlightCabinClass 
{ 
    All, Economy, PrimiumEconomy, Business, PremiumBusiness, First 
} 
public class SearchForFlight 
{ 
    public SearchForFlight() 
    { 
     JourneyList = new List<SelectListItem>(); 
     FlightCabinClassList = new List<SelectListItem>(); 
    } 
    public string EndUserIp { get; set; } 
    public string TokenId { get; set; } 
    public int AdultCount { get; set; } 
    [JsonIgnore] 
    public IEnumerable<SelectListItem> JourneyList { get; set; } 

    public int ChildCount { get; set; } 
    public int InfantCount { get; set; } 
    public bool DirectFlight { get; set; } 
    public bool OneStopFlight { get; set; } 
    public Enum JourneyType { get; set; } 
    public string PreferedLines { get; set; } 
    public string Origin { get; set; } 
    public string Destination { get; set; } 
    public Enum FlightCabinClass { get; set; } 
// [DataType(DataType.Date)] 
    public DateTime PreferredDepartureTime { get; set; } 
// [DataType(DataType.Date)] 
    public DateTime PreferredArrivalTime { get; set; } 
    [JsonIgnore] 
    public IEnumerable<SelectListItem> FlightCabinClassList { get; set; } 
    public string Sources { get; set; } 

} 
+0

_ "но выпадающий значение (JourneyType) равна нулю здесь" _ Можете ли вы включить 'html' на вопрос? – guest271314

+0

@ guest271314 Я включил html в последний. Пожалуйста, см. Обновленные вопросы. – duke

+0

. Выбирается ли 'option' при нажатии элемента' # btnPost'? – guest271314

ответ

0

Прежде всего, Thnks г-ну StephenMuecke. В моем коде была небольшая ошибка, из-за которой возвращаемое значение было неправильным. После изменения типа возвращаемого значения для свойства JourneyType из enum в JourneyType все работает нормально.

public JourneyType JourneyType { get; set; } 

не

public Enum JourneyType { get; set; } 
+0

Можете ли вы изменить свое предложение? его не «Значение, потерянное в JSON.stringify В функции $ .ajax», поскольку в функции $ .ajax значение все равно остается неизменным, но значение не является обязательным в методе действий (на стороне сервера) –

+0

okk сделает это в ближайшее время – duke