Muna Fadelallah Ответов: 3

Здравствуйте, Как заполнить текстовые поля из downdownlist


Привет ,
Пожалуйста, я пытаюсь заполнить текстовое поле (Адрес) из выпадающего списка (имя) выбранное имя пожалуйста, помогите мне с этим я застрял с проблемой со вчерашнего дня :(
Вот код, который я написал
с уважением.

Что я уже пробовал:

My View 
------
<pre>   <div class="editor-label">
                                @Html.LabelFor(model => model.recieverName)
                                </div>
                                <div class="editor-field">
                         @Html.DropDownListFor(model => model.recieverName, listOfDealers,"-Select-", new { id = "name1", style = "width:180px;" })
                            
                                </div> 

<div class="editor-label">
                                  @Html.LabelFor(model => model.senderAddress)
                              </div>
                              <div class="editor-field">
                                  @Html.TextBoxFor(model => model.recieverAddress, new { id = "addresstxt", style = "width:180px; cursor:default;" })

                              </div>


<script type="text/javascript">


jQuery(document).ready(function () {
        $("#name1").change(function () {
            var ServiceUrl = "/Sheet/GetAddress?fname=" + fname;
            var content = '';
            $.support.cors = true;
            $.ajax({
                type: 'POST',
                url: ServiceUrl,
                async: true,
                cache: false,
                crossDomain: true,
                contentType: "application/json; charset=utf-8",
                dataType: 'json',
                error: function (xhr, err) {
                },
                success: function (query) {
                    $('#addresstxt').val(query.Value);

                }
            });
        });
          });


My conroller 
----------------

<pre>  [HttpGet]
        public JsonResult GetAddress(DealerModel dlr  , string fname  )
        {
       
            //According id to query the database and get the relevant values.

             using (TICK_DBEntities db = new TICK_DBEntities())
             {
                 
                 var query = db.TICK_Dealers.Where(c => c.fullName == fname).Select(c => new {Address = c.address, MobileNo = c.mobileNo }).FirstOrDefault();
                 return Json(query, JsonRequestBehavior.AllowGet);
             }
        }
&низкотемпературный;

Richard Deeming

var ServiceUrl = "/Sheet/GetAddress?fname=" + fname;

Где же это fname переменная определена?

Используйте инструменты разработчика Вашего браузера, чтобы отслеживать сетевые запросы (XHR) со своей страницы и точно видеть, что вы отправляете на сервер и что он возвращает.

Muna Fadelallah

в конроллере
[HttpGet]
public JsonResult GetAddress(DealerModel dlr , string fname )
{

//According id для запроса базы данных и получения соответствующих значений.

использование (TICK_DBEntities db = new TICK_DBEntities())
{

var query = db.TICK_Dealers.Где(c => c.fullName == fname).Выберите(c => new {Address = c.address, MobileNo = c.mobileNo }).Метода firstordefault();
return Json(query, JsonRequestBehavior.AllowGet);
}

3 Ответов

Рейтинг:
23

Vincent Maverick Durano

Ваш код выдает ошибку? Если так, то что же это такое? Попадает ли ваше действие GetAddress, когда вы устанавливаете точку останова во время отладки? Кроме того, какова ценность query.Value?

Если вы возвращаете Model/Class затем вы должны ссылаться на свойство Model вот так в вашем AJAX успешный обратный вызов:

success: function (query) {
                    $('#addresstxt').val(query.YourModelPropertyName);

 }


Чтобы сделать это более понятным, например, у вас есть следующее Model/Class:
public class Student
{
     public string FirstName { get; set; }
     public string LastName { get; set; }
}


Теперь вы хотите вернуть его Student модель в вашем Action Controller:

public JsonResult AjaxGetCall() {  
            Student student = new Student{  
                FirstName= "Vynn",  
                LastName= "Durano"
            };  
            return Json(student, JsonRequestBehavior.AllowGet);  
}  


Чтобы получить результат от вашего AJAX-запроса, вы можете сделать что - то вроде этого:

$.ajax({  
            type: "GET",  
            url: "/YourControllerName/AjaxGetCall",  
            contentType: "application/json; charset=utf-8",  
            dataType: "json",  
            success: function(response) {  
                if (response != null) {  
                    $('#YourTextBoxID1').val(response.FirstName);  
                    $('#YourTextBoxID2').val(response.LastName);   
                } else {  
                    alert("object is null");  
                }  
            },  
            failure: function(response) {  
                alert(response.responseText);  
            },  
            error: function(response) {  
                alert(response.responseText);  
            }  
        });  


Muna Fadelallah

Нет он не бросает ошибок просто нет результата ,
я попробовал, но тоже не получилось

Vincent Maverick Durano

Затем вы должны отладить свой код. Пожалуйста, обратите внимание, что мы не можем получить доступ к вашей машине и выполнить отладку за вас. Мы здесь только для того, чтобы помогать вам и направлять.

Решение, которое я предоставил, должно помочь вам начать работу над тем, как это сделать.

Рейтинг:
17

Richard Maly

Из того, что я вижу, есть пара проблем с вашим кодом.

на вашем контроллере вы маркируете его

[HttpGet]
таким образом, чтобы получить доступ к коду, вы должны сделать "get" в вашем JS вы делаете $.ajax с "Post" Я бы посмотрел на выполнение $.get() (вы можете видеть, что ответ Винсента имеет "Get", а не "Post" в $.ajax)

В конечном счете, использование инструментов разработки вашего браузера-это ваш ответ, вкладка сеть сообщит вам о любых ошибках, которые вы получаете.

В JS console.log() полезен для выхода переменных из системы.

Я, вероятно, использовал бы класс, а не анонимный в вашей БД select
.Select(c => new<pre> {Address = c.address, MobileNo = c.mobileNo })

так оно и будет
.Select(c => new AddressClass = <pre> {Address = c.address, MobileNo = c.mobileNo })


Область, где вы получите некоторую оптимизацию, а не
var query = db.TICK_Dealers.Where(c => c.fullName == fname).Select(c => new {Address = c.address, MobileNo = c.mobileNo }).FirstOrDefault();

ты должен это сделать
var query = db.TICK_Dealers.FirstOrDefault(c => c.fullName == fname).Select(c => new {Address = c.address, MobileNo = c.mobileNo });

или даже ты
<pre> var query = db.TICK_Dealers.Find(c => c.fullName == fname).Select(c => new {Address = c.address, MobileNo = c.mobileNo });


Richard Maly

Почему такой нисходящий голос?

Muna Fadelallah

я изменил его Спасибо за ответ я попробую это сделать

Muna Fadelallah

извините но ваши решения не сработали

Рейтинг:
0

Vincent Maverick Durano

вопрос не в winforms. Пожалуйста, внимательно отнеситесь к вопросу, прежде чем бросать предлагаемое решение. Спасибо!