2015-10-05 2 views
0

Мне нужно отделить мое MVC-представление с jQuery, которое находится в верхней части страницы. Я не уверен, что следует использовать вместо этих строк:Получить идентификатор текстового поля MVC для отправки в Ajax

Это данные, которые проходят к вызову Ajax.

var data = { 
      '@Html.IdFor(model => model.SearchMethod)': searchMethod, 
      '@Html.IdFor(model => model.FirstName)': firstName, 
      '@Html.IdFor(model => model.LastName)': lastName 
     }; 

Это мои текстовые поля в MVC:

@Html.DropDownListFor(model => model.SearchMethod, Model.AvailableSearchMethods, new { onchange = "toggleDIvDisplay(this.value)", id = "SearchMethod" }) 

@Html.TextBoxFor(model => model.FirstName, new { id = "FirstName" }) 
@Html.TextBoxFor(model => model.LastName, new { id = "LastName" }) 

Я стараюсь это, но он не работает. (Он не находит ни одной записи, как я вещь не может получить значение из textboxed правильно.

 var data = { 
      '$("#SearchMethod").val()': searchMethod, 
      '$("#FirstName").val()': firstName, 
      '$("#LastName").val()': lastName 
     }; 

и это мой полный Ajax вызов, который работает, когда я использую Html.IdFor.

$.ajax({ 
      url: '@Url.Action("GetCustomer", "Doc")', 

      type: 'POST', 
      data: data, 
      dataType: 'json', 
      success: function (data) { 

       if (data && data.data) { 
        $.unblockUI(); 
        renderResults(data.data); 

       } 

ответ

3

похоже, что вы можете иметь синтаксис назад .. когда вы определяете data объект Имя идет первым, а значение второго name: value.

@Html.DropDownListFor(model => model.SearchMethod, Model.AvailableSearchMethods, new { onchange = "toggleDIvDisplay(this.value)"}) 
@Html.TextBoxFor(model => model.FirstName) 
@Html.TextBoxFor(model => model.LastName) 

это даст лет u та же самая разметка, что и включение @id в htmlAttributes. Итак, для вашего объекта данных вы захотите использовать имя параметра, который вы передаете, а затем получите значение из входов на основе Id.

var data = { 
     searchMethod: $("#SearchMethod").val(), 
     firstName: $("#FirstName").val(), 
     lastName: $("#LastName").val() 
    }; 

Здесь вы можете видеть, что вам не нужны одиночные кавычки вокруг методов Val().

+0

Отлично, вот и все. Благодарю. – Alma

1

Не уверен, что вы пытаетесь сделать. Помните, что в вашем первом определении data ключи будут просто именами свойств, а не именами свойств с обозначением идентификатора (т.е. SearchMethod, не#SearchMethod. Если вы пытаетесь сделать что-то вроде использования ключ для запроса элемент, вам нужно сделать $('#' + key).

Ваше второе определение data не имеет смысла. 1) Я не знаю, почему вы переосмысление его в первую очередь, и 2) Вшита jQuery в кавычках означает, что буквально строка будет установлена ​​как ключ, не оценка.

Смежные вопросы