Чтобы установить значение, записанное пользователем как значение раскрывающегося в asp.net - PullRequest
1 голос
/ 14 января 2020

У меня есть примечания div Если пользователь выберет опцию Другое, то пользователю необходимо заполнить поле по причинам.

Это внутри веб-страницы (.cs html)

    @model MNepalWeb.Models.CustomerSRInfo
@{
List<SelectListItem> Remarks = new List<SelectListItem>();
    Remarks.Add(new SelectListItem { Text = "Your name does not match", Value = "Your name does not match" });
    Remarks.Add(new SelectListItem { Text = "Your date of birth does not match", Value = "Your date of birth does not match" });
    Remarks.Add(new SelectListItem { Text = "Others", Value = "Others" });
}

// Для замечаний

                            <div class="form-group">
                                <label class="control-label col-md-2">Reject Remarks <b style="color:red;">*</b></label>

                                <div class="col-md-5">
                                    @Html.DropDownListFor(model => model.Remarks, new SelectList(Remarks, "Value", "Text"), new { @class = "form-control", @style = "width: 100%;", @id = "txtRemarks" })
                                    <br />
                                    <textarea name="OthersRemarks" id="txtOthersRemarks" placeholder="Please Insert Remarks to Reject, maxlength- 200" maxlength="200" rows="4" cols="50" style=" display:none; min-height:50px;min-width:200px;max-height:100px;max-width:422px;" class="form-control" @*oninput="checkValidation()"*@></textarea>
                                    <b style="color:red">*</b><b> Note Please fill out remarks before rejecting </b>
                                    <br />
                                </div>
                               </div>
                        </div>

JS для изменения значения

if ($.trim($('#RejectRemarks select').val()) == "" || $.trim($('#RejectRemarks select').val()) == "Others") {
                   var TextBoxRemarks = $("#txtOthersRemarks").val();
                   if ($.trim($('#RejectRemarks select').val()) == "Others" && TextBoxRemarks.trim() == "") {
                       document.getElementById("txtOthersRemarks").setCustomValidity("Other Reject Remarks is required");
                       $('#txtOthersRemarks select').focus();
                       return;
                   }
                   else if ($.trim($('#RejectRemarks select').val()) == "Others" && TextBoxRemarks.trim() != "") {
                       var txtRemarks = document.getElementById("txtRemarks");
                       //txtRemarks.value = $("#txtOthersRemarks").val();
                       txtRemarks.val = TextBoxRemarks; 
                       //txtRemarks.value = TextBoxRemarks;
                       document.getElementById("txtOthersRemarks").setCustomValidity("");

                       return;
                   }
                   else {
                       document.getElementById("txtRemarks").setCustomValidity("Reject Remarks is required");
                       $('#RejectRemarks select').focus();
                       return;
                   }
               }
               else {
                   document.getElementById("txtRemarks").setCustomValidity("");

               }

Но когда я реализую это js, он только изменяет значения на флажок и не отправляет пустое значение контроллеру.

public ActionResult BankLinkVerify(UserInfo model, string btnApprove, string Remarks)

Я пытаюсь найти, где происходит ошибка, но не могу проанализировать это. Мне нужны любые пользовательские типы в текстовом поле в качестве значения примечания (по умолчанию оно идет иначе, но когда я делаю это, js значение раскрывающегося списка становится нулевым для контроллера). Спасибо!

Ответы [ 2 ]

1 голос
/ 14 января 2020

Что касается вашего дела, вы можете получить доступ к текущему значению через Request или FormCollection. Вы можете прочитать значение OthersRemarks textarea из текущего запроса, используя Request.Form:

В вашем методе Controller:

string Remarks= Request.Form["OthersRemarks"].ToString() 
0 голосов
/ 23 января 2020

Я также нашел другое решение ..

FormCollection также можно использовать в контроллере

public ActionResult BankLinkApprove(UserInfo model, string btnApprove, FormCollection collection, string Remarks){

        if (Remarks.Equals("Others")){
        userInfo.Remarks = collection["OthersRemarks"].ToString();
        }
        else{
        userInfo.Remarks = info.Remarks;
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...