asp. net MVC обновление TextBoxFor Value из события Textbox OnChange - PullRequest
0 голосов
/ 24 апреля 2020

Мне нужна помощь по этому вопросу.

У меня в поле зрения 2. Я хотел бы получить значение (сгенерированное в моем контроллере), примененное к textbox2, когда есть изменение в textbox1. Например, я ввожу имя пользователя в textbox1, а textbox2 - это адрес электронной почты, получаемый от контроллера (мы можем представить, что проверка контроллера выполняется в базе данных или в активном каталоге).

Мой код ниже, кажется, не работает:

В моем файле View я добавил раздел скрипта:

@section scripts{         
           <script type="text/javascript" language="javascript">                
            function ShowPersonalPanel(myChkboxPersonalLine) {
                if (myChkboxPersonalLine.checked == false) {
                    $("#1-w").hide("fast");
                }
                else {
                    $("#1-w").show("fast");
                }
            }           
        </script>

        <script language="javascript">    
            $("#1-w").hide("fast");



            $('#myOtherGID').change(function () {
                var myOtherGID = this.value;
                $.getJSON("/PhoneController/GetEmailByGID",
                    {
                        strGID: myOtherGID
                    },
                    function (data) {
                        $('myOtherEmail').val(data);                            
                    });
            });
        </script>
    }

И код в представлении с текстовым полем:

 <label for="myOtherGIDlbl">GID:</label>
        <label class="text" id="myOtherGIDlbl">
           @Html.TextBoxFor(model => model.myOtherGID)
        </label>

        <label for="myOtherEmaillbl">Email:</label>
        <label class="text" id="myOtherEmaillbl">                
            @Html.TextBoxFor(model => model.myOtherEmail)
        </label>

На моем контроллере (с именем PhoneController) я добавил action:

 public JsonResult GetEmailByGID(string strGID)
    {
        string strEmailAddress = "this is my email";

        return Json(strEmailAddress, JsonRequestBehavior.AllowGet);
    }

Поскольку я работаю с _layout.cs html и viewFile.cs html, я добавил в макет (в разделе head) строку ниже:

<script type="text/javascript" src="~/Scripts/jquery.unobtrusive-ajax.js"></script>

Что я пропустил?

С уважением

1 Ответ

0 голосов
/ 24 апреля 2020

Я нашел свою проблему. Я изменил свой javascript на команду $. ajax:

script type="text/javascript">
    $('#myOtherGID').change(function () {
        var selection = $('#myOtherGID').val();
        if (selection.length > 0) {
            var url = "/Phone/GetEmailByGID";
            $.ajax({
                    type: "POST",
                    url: '@Url.Action("GetEmailByGID", "Phone")',
                    dataType: "json",
                    success: function(data, status) {
                    alert(data);
                    },
                    error: function() {
                    alert('error');
                }
            });               
        }
    });
</script>

В контроллере:

    [HttpPost]
    public ActionResult GetEmailByGID(string strGID)
    {
        string strEmailAddress = strEmailByGID(strGID);

        return Json(strEmailAddress);            
    }

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...