【问题标题】:Passing values from dropDown list to Database in ASP.NET MVC将值从下拉列表传递到 ASP.NET MVC 中的数据库
【发布时间】:2018-03-26 12:44:19
【问题描述】:

我有一个带有两个带有硬编码值的下拉框的表单。我需要将用户从视图中选择的值传递给控制器​​并将其存储在数据库表中。

这是下拉菜单的 HTML 代码。

<div class="form-group">
  <label for="UserType">User Type:</label>
  <select name="usertype" class="form-control" id="drpUserType">
    <option value="0">Please Select</option>
    <option value="regular">Regular</option>
    <option value="preLoader">Pre Loader</option>
  </select>
</div>

这是脚本和 AJAX。这会将值传递给控制器​​。

$("#btnSubmitCustomer").click(function (){
  var customer = {};

  customer.ID = $("#hdnCustomerID").val();
  customer.UserType = $("#drpUserType").val();

  $.ajax({
          type: "POST",
          data: {customer : customer},
          dataType: "json",
          url: "@Url.Action("Save", "Customer")",
          success: function (response){
                if(response.type == "Success"){
                    notifyMe("Customer Added Successfully", "Success");
                    clearForm();
                    setDataTable();
                    $('#customerModal').modal('hide');
                }
            },
            error: function (error){
                console.log(error)
                $('#loading_spinner').hide();
            }
  });
});

这是控制器代码。

[HttpPost]
    public JsonResult Save(Customer customer)
    {
        bool userType;
        if (customer.UserType.Equals("preLoader"))
        {
            userType = customer.UserType == true;
        }
        else
        {
            userType = customer.UserType == false;
        }

        try
        {
            Customer cst = new Customer();
            using (MyDBContext myDBContext = new MyDBContext())
            {
                if (customer != null)
                {
                    DateTime localTime = DateTime.Now;

                    if (customer.ID == 0)
                    {
                        cst.UserType = userType;

                        myDBContext.Customer.Add(cst);
                    }
                    else
                    {
                        int customerID = customer.ID;
                        Customer customerOld = myDBContext.Customer.Where(x => x.ID == customerID).FirstOrDefault();
                        customerOld.UserType = customer.UserType;
                    }
                    myDBContext.SaveChanges();
                }
            }
            return Json(new { type = "Success", data = cst });
        }
        catch (Exception ex)
            {
            string message = ex.Message;
            if (ex.InnerException != null)
            {
                message += ex.InnerException.Message;
            }
            _Common.Log(message, "Customer", "save");
           return Json(new { type = "Error", message = ex.Message });
        }
    }

在 MySql 表中,userType 是 tinyint(1)。我需要通过下拉框验证用户类型,如果它的“preLoader | true”分配'1',如果它的“regular | false”分配'0'。但是无论用户选择的选项是什么,都会变得错误。

我该如何解决?

【问题讨论】:

  • Drop-down(customer.UserType)的值是不是传到了Click函数里?你检查过吗?

标签: javascript jquery mysql json.net asp.net-ajax


【解决方案1】:

传递数据时尽量使用这段代码

var customer ={
ID = $("#hdnCustomerID").val();
UserType = $("#drpUserType").val();
};

在 ajax 中:

   $.ajax({
              ...
              data: JSON.stringify({ customer: customer }),
              ...
          });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    相关资源
    最近更新 更多