Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果可选参数概念不适用';不行?_Javascript_C#_Asp.net Mvc - Fatal编程技术网

Javascript 如果可选参数概念不适用';不行?

Javascript 如果可选参数概念不适用';不行?,javascript,c#,asp.net-mvc,Javascript,C#,Asp.net Mvc,我有一个JS函数,它根据选中的单选按钮从文本框中获取一个值 示例:如果选择了RadioButtonNo,则值从文本框A中提取,否则如果选择RadioButtonYes,则值从文本框B中提取。以下脚本在我看来 $('#btnVolunteerSaveBtn').on('click', function() { // on click of save button if (document.getElementById('RadioNo').checked) { //ID of radio bu

我有一个JS函数,它根据选中的单选按钮从文本框中获取一个值

示例:如果选择了RadioButtonNo,则值从文本框A中提取,否则如果选择RadioButtonYes,则值从文本框B中提取。以下脚本在我看来

$('#btnVolunteerSaveBtn').on('click', function() { // on click of save button
  if (document.getElementById('RadioNo').checked) { //ID of radio button NO
    var checking = $('#Donation').val(); //ID of textbox from where the value is to be taken if RadioButton No is selected
    if (checking == "") {
      //if nothing is entered, stop from saving in DB
    } else {
      x = $('#Donation').val(); //ID of textbox from where the value is to be taken if RadioButton No is selected
      $.ajax({
        url: '@Url.Action("DonationValue","VolunteerInfo")',
        data: {
          name: x
        },
        type: "POST"
      });
    }
  } else {
    x = $('#GetNames').val(); //ID of textbox from where the value is to be taken if RadioButton Yes is selected
    $.ajax({
      url: '@Url.Action("DonationValue","VolunteerInfo")',
      data: {
        name: x
      },
      type: "POST"
    });
  }
});
到现在为止,它似乎工作得很好。现在谈到控制器,我有一个函数
DonationValue

我的问题:

[HttpPost]
public ActionResult AddVolunteer(VolunteerInfo viewModel)
{
    if (!ModelState.IsValid)
    {
        return View("AddVolunteer", viewModel);
    }

    var volunteer = new VolunteerInfo()
    {
        Name = viewModel.Name,
        BirthdayDateTime = viewModel.BirthdayDateTime,
        Address = viewModel.Address,
        PhoneNumber = viewModel.PhoneNumber,
        EmailAddress = viewModel.EmailAddress,
        OccasionsID = viewModel.OccasionsID,
        DonationForWhom = _DonationValue
    };

    if (!string.IsNullOrEmpty(volunteer.DonationForWhom))
    {
        _context.VolunteerInfos.Add(volunteer);
        _context.SaveChanges();
        return RedirectToAction("Index", "Home");
    }

    return //something to save state so that user doesnt have to enter all the values again
}

[HttpPost]
public void DonationValue(string name)
{
    _DonationValue = name;
}
  • 如何传递上面的
    name
    参数
  • 如果id为捐赠的文本框中没有填写任何内容,我如何停止 在数据库中保存表单
  • 我的尝试:

    [HttpPost]
    public ActionResult AddVolunteer(VolunteerInfo viewModel)
    {
        if (!ModelState.IsValid)
        {
            return View("AddVolunteer", viewModel);
        }
    
        var volunteer = new VolunteerInfo()
        {
            Name = viewModel.Name,
            BirthdayDateTime = viewModel.BirthdayDateTime,
            Address = viewModel.Address,
            PhoneNumber = viewModel.PhoneNumber,
            EmailAddress = viewModel.EmailAddress,
            OccasionsID = viewModel.OccasionsID,
            DonationForWhom = _DonationValue
        };
    
        if (!string.IsNullOrEmpty(volunteer.DonationForWhom))
        {
            _context.VolunteerInfos.Add(volunteer);
            _context.SaveChanges();
            return RedirectToAction("Index", "Home");
        }
    
        return //something to save state so that user doesnt have to enter all the values again
    }
    
    [HttpPost]
    public void DonationValue(string name)
    {
        _DonationValue = name;
    }
    
    我试过了

    public string DonationValue(string name = null)
    {
        return name; //Trying to pass this value above
    }
    
    这没用。它解决了错误,但传递的值始终为null。我也尝试了一些其他的方法,但都没有效果

    编辑:

    [HttpPost]
    public ActionResult AddVolunteer(VolunteerInfo viewModel)
    {
        if (!ModelState.IsValid)
        {
            return View("AddVolunteer", viewModel);
        }
    
        var volunteer = new VolunteerInfo()
        {
            Name = viewModel.Name,
            BirthdayDateTime = viewModel.BirthdayDateTime,
            Address = viewModel.Address,
            PhoneNumber = viewModel.PhoneNumber,
            EmailAddress = viewModel.EmailAddress,
            OccasionsID = viewModel.OccasionsID,
            DonationForWhom = _DonationValue
        };
    
        if (!string.IsNullOrEmpty(volunteer.DonationForWhom))
        {
            _context.VolunteerInfos.Add(volunteer);
            _context.SaveChanges();
            return RedirectToAction("Index", "Home");
        }
    
        return //something to save state so that user doesnt have to enter all the values again
    }
    
    [HttpPost]
    public void DonationValue(string name)
    {
        _DonationValue = name;
    }
    
    @戴西·希普顿。 这是更好的解决方案吗

    <script>
            $(function() {
                $('#btnVolunteerSaveBtn').on('click', function() { // on click of save button
                    debugger;
                    if (document.getElementById('RadioNo').checked) { //ID of radio button NO
                        var checking = $('#Donation').val(); //ID of textbox from where the value is to be taken if RadioButton No is selected
                        if (checking == "") {
                            //if nothing is entered, stop from saving in DB
                        }
                        else {
                            var x = $('#Donation').val(); //ID of textbox from where the value is to be taken if RadioButton No is selected
                            var jsonObject = {
                                "textValue": x,
                                "isRadioSelected": "true" // show the radio is selected
                            };
    
                            $.ajax({
                                url: '@Url.Action("AddVolunteer", "VolunteerInfo")',
                                data: JSON.stringify(jsonObject),
                                contentType: "application/json; charset=utf-8",
                                dataType: "json",
                                type: "POST",
                                error: function (response) {
                                    alert(response.responseText);
                                },
                                success: function (response) {
                                    alert(response);
                                }
                            });
                        }
                    }
                    else {
                        var jsonObject2 = {
                            "textValue": $('#GetNames').val(),
                            "isRadioSelected": "false" // show the radio is not selected
                        };
    
                        $.ajax({
                            url: '@Url.Action("AddVolunteer", "VolunteerInfo")',
                            data: JSON.stringify(jsonObject2),
                            contentType: "application/json; charset=utf-8",
                            dataType: "json",
                            type: "POST",
                            error: function (response) {
                                alert(response.responseText);
                            },
                            success: function (response) {
                                alert(response);
                            }
                        });
                    }
    
                });
            })
        </script>
    
    1) 客户端使用name参数调用
    DonationValue
    post方法

    e、 g.
    name=“abc”

    此返回值将存储在客户端say变量
    retunedDonationValue

    如果您没有传递任何name参数,那么上面的post方法将返回空字符串,然后只需设置
    retunedDonationValue=''

    2) 现在,您必须将上面的
    retunedDonationValue
    传递给post json对象中的post方法,如

    var jsonObject = 
                    {
                        "Name" = "YourName",
                        "BirthdayDateTime" = "YourBirthdayDateTime",
                        "Address" = "YourAddress",
                        "PhoneNumber" = "YourPhoneNumber",
                        "EmailAddress" = "YourEmailAddress",
                        "OccasionsID" = "YourOccasionsID",
                        "DonationForWhom" = retunedDonationValue  //Note here
                    }
    
    3) 并将此post数据传递给http调用AddInvorite

                        $.ajax({
                            url: '@Url.Action("AddVolunteer", "VolunteerInfo")',
                            data: JSON.stringify(jsonObject),
                            contentType: "application/json; charset=utf-8",
                            dataType: "json",
                            type: "POST",
                            error: function (response) {
                                alert(response.responseText);
                            },
                            success: function (response) {
                                alert(response);
                            }
                        });
    
    4) 你的行动方法是

    [HttpPost]
        public ActionResult AddVolunteer(VolunteerInfo viewModel)
        {
            if (!ModelState.IsValid)
            {
                return View("AddVolunteer", viewModel);
            }
    
            var volunteer = new VolunteerInfo()
            {
                Name = viewModel.Name,
                BirthdayDateTime = viewModel.BirthdayDateTime,
                Address = viewModel.Address,
                PhoneNumber = viewModel.PhoneNumber,
                EmailAddress = viewModel.EmailAddress,
                OccasionsID = viewModel.OccasionsID,
                DonationForWhom = viewModel.DonationForWhom
            };
    
            if (!string.IsNullOrEmpty(volunteer.DonationForWhom))
            {
                _context.VolunteerInfos.Add(volunteer);
                _context.SaveChanges();
            }
    
            return View(viewModel);
    
        }
    

    您忘记将
    [HttpPost]
    属性放在您的
    DonationValue
    method@RuiJarimba:没有。我试过了。不起作用。@Priyanka Dembla,上面代码中的
    ha
    参数在哪里?@ershoaib:我是说name参数。现在请看。谢谢你纠正我,@Priyanka Dembla,你是否检查了
    如果(!string.IsNullOrEmpty(志愿者.donationforwhere)){{u context.志愿者信息.Add(志愿者);_context.SaveChanges()}
    你的解决方案有什么变化,查看我新发布的解决方案可能会有帮助:)@Priyanka Dembla,让我知道它是否对你有帮助:)