【问题标题】:To set value written by user as value of dropdown in asp.net将用户写入的值设置为 asp.net 中下拉列表的值
【发布时间】:2020-01-14 05:40:20
【问题描述】:

我有一个备注 div If user choose option of Other then user need to fill box for reasons.

这是网页内(.cshtml)

    @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 下拉值对控制器变为空)。 谢谢!

【问题讨论】:

  • 如何将表单数据发送到 Controller 方法?您使用的是 AJAX 还是默认表单绑定?
  • @RahulSharma。先生,我使用表单绑定
  • @RahulSharma.. using (Html.BeginForm("BankLinkVerify", "Customer", FormMethod.Post, new { id = "ViewBankLinkVerifyDetail", class= "ViewBankLinkVerifyDetail" }))
  • 你可以使用 FormCollection 来获取你的值:string Remarks= Request.Form["Remarks"].ToString();
  • @RahulSharma。先生,它给出的值是“其他”,而我需要用户在文本框中输入的内容作为备注。假设用户在下拉列表中选择其他并输入“图像与公民身份不匹配”之类的内容。备注值应该更改为用户类型,而我只得到“其他”作为值。我试图改变价值,但只得到空值。

标签: javascript c# jquery asp.net


【解决方案1】:

根据您的情况,您可以通过RequestFormCollection 访问当前值。您可以使用 Request.Form 从当前请求中读取您的 OthersRemarks textarea 值:

在您的Controller 方法中:

string Remarks= Request.Form["OthersRemarks"].ToString() 

【讨论】:

    【解决方案2】:

    我也找到了另一个解决方案..

    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;
            }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-04-08
      • 1970-01-01
      • 2016-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      相关资源
      最近更新 更多