簡體   English   中英

值不能從視圖傳遞到MVC中的控制器

[英]value not pass from view to controller in mvc

您好,我正在使用帶有ADO NET代碼的MVC 5 C#,我在插入數據並單擊全部保存后插入主數據和主詳細數據,然后觸發事件,但值未傳遞給控制器​​obj顯示空值,我嘗試了很多,但我可以找不到問題,這就是為什么我共享代碼並幫助高級人員的原因,也許您可​​以更好,更輕松地找到問題。 我正在共享javascript代碼視圖代碼和控制器代碼功能代碼。 當我調試javascript代碼時,我在javascript中未發現任何問題,並且javascript代碼中沒有錯誤。

視圖

 <main class="pt-5 mx-lg-5">
        <div class="container-fluid mt-5">
            <div class="card">
                <div class="card-body">
                    <div class="row">
                        <div class="col-md-12 col-sm-12 col-xs-12">
                            <div class="x_panel">

                                <div class="x_content">

                                    <div class="panel panel-primary">
                                        <div class="panel-heading">

                                        </div>
                                        <div class="panel-body" style="background-color:#F0FFFF">
                                            <button type="button" id="btnAddnew" class="btn btn-primary" data-toggle="modal" data-target="#centralModalLGInfoDemo" style="float:right">Add New</button>

                                            <table id="example1" class="table table-bordered table-striped">
                                                <thead>
                                                    <tr>
                                                        <th>Sr No</th>
                                                        <th>Item Desc</th>
                                                        <th>Qty</th>
                                                        <th>Remarks</th>
                                                        <th>Action</th>

                                                    </tr>
                                                </thead>
                                                <tbody>
                                                    @foreach (var item in Model.Requisitions)
                                                    {
                                                        <tr>
                                                            <td>@Html.DisplayFor(module => item.Srno)</td>
                                                            <td>@Html.DisplayFor(module => item.ItemDesc)</td>
                                                            <td>@Html.DisplayFor(modelItem => item.Qty)</td>
                                                            <td>@Html.DisplayFor(modelItem => item.Remarks)</td>
                                                            <td>
                                                                <a onclick="GetDetails(@item.ReqNo)">

                                                                    <i class="fa fa-edit"></i>
                                                                </a>
                                                                <a>
                                                                    @Html.ActionLink(" ", "DeleteCustomer", "Home", new { id = item.ReqNo }, new { onclick = "return confirm('Are sure wants to delete?');", @class = "fa fa-trash-o" })
                                                                </a>
                                                            </td>
                                                        </tr>
                                                    }
                                                </tbody>
                                                <tfoot>
                                                </tfoot>
                                            </table>




    </div>

                                    </div>
                                </div>
                                <!---End-->

                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="modal fade" id="centralModalLGInfoDemo" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                <div class="modal-dialog modal-lg modal-notify modal-info" role="document">
                    <!--Content-->

                        <div class="modal-content" style="width:140%">
                            <!--Header-->
                            <div class="modal-header">
                                <p class="heading lead">Add New Requisition</p>
                                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                    <span aria-hidden="true" class="white-text">&times;</span>
                                </button>
                            </div>
                            <!--Body-->
                            <form id="NewOrderForm">
                                <div class="modal-body">
                                    <div class="form-row">
                                        <div class="col">
                                            <!-- Requisition Date -->
                                            <div class="md-form">
                                               @Html.TextBox("ReqNo", (String)ViewBag.ReqNo, new { @class = "form-control mr-sm-3", @id = "txtRequisitionno" })

                                            <label for="lblRequisition">Requisition No.</label>
                                            </div>
                                        </div>

                                        <div class="col">
                                            <!-- Requisition Date -->
                                            <div class="md-form">
                                                @Html.TextBoxFor(m => m.ReqDate, new { @class = "form-control", @id = "txtRequisitionDatepicker" })

                                                <label for="lblRequisitionDatepicker">Requisition Date</label>
                                            </div>
                                        </div>
                                        <div class="col">
                                            <!-- Job -->
                                            <div class="md-form">
                                                @Html.TextBoxFor(m => m.Job, new { @class = "form-control", @id = "txtjob" })

                                                <label for="lbljob">Job</label>
                                            </div>
                                        </div>
                                        <div class="col">
                                            <!-- Job -->
                                            <div class="md-form">
                                                @Html.TextBoxFor(m => m.Approvedby, new { @class = "form-control", @id = "txtApprovedby" })

                                                <label for="lblApprovedby">Approved by</label>
                                            </div>
                                        </div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                        <div class="col">
                                            <!-- Job -->
                                            <div class="md-form">
                                                <div class="custom-control custom-checkbox">
                                                    <span style="float:right">
                                                        @Html.CheckBoxFor(m => m.IsApproved, new { @class = "custom-control-input", @id = "defaultChecked2" })

                                                        <label class="custom-control-label" for="defaultChecked2">Approved</label>
                                                    </span>

                                                </div>
                                            </div>
                                        </div>
                                    </div>


                                    <!--Detail-->
                                    <h5 style="margin-top:10px;color:#ff6347">Requisition Details</h5>
                                    <hr />
                                    <div>
                                        <div class="form-row">
                                            <div class="col-md-1">
                                                <!-- Requisition Date -->
                                                <div class="md-form">

                                                    <input type="text" id="SrNo" name="SrNo" placeholder="Srno" class="form-control" />
                                                    <label for="lblSrno">Sr No.</label>
                                                </div>
                                            </div>

                                            <div class="col-md-4">
                                                <!-- Requisition Date -->
                                                <div class="md-form">
                                                    @Html.DropDownListFor(m => m.ItemCode, ViewBag.Items as List<SelectListItem>, new { @class = "form-control", id = "txtItemcode" })
                                                </div>
                                            </div>

                                            <div class="col">
                                            <!-- Job -->
                                            <div class="md-form">
                                               <input type="number" id="Qty" name="Qty" placeholder="Qty" class="form-control" />

                                                <label for="lbljob">Qty</label>
                                            </div>
                                        </div>
                                            <div class="col">
                                                <!-- Job -->
                                                <div class="md-form">
                                                    <input type="text" id="Reemarks" name="Reemarks" placeholder="Remarks" class="form-control" />

                                                    <label for="lblRemarks">Remarks</label>
                                                </div>
                                            </div>
                                            <div class="col-md-2 col-lg-offset-4">
                                                <a id="addToList" class="btn btn-primary">Add To List</a>
                                            </div>
                                        </div>
                                        <table id="detailsTable" class="table">
                                            <thead style="background-color:#33b5e5; color:white">
                                                <tr>
                                                    <th style="width:2%">SrNo.</th>
                                                    <th style="width:40%">Items</th>
                                                    <th style="width:15%">Qty</th>
                                                    <th style="width:30%">Remarks</th>
                                                    <th style="width:10%"></th>
                                                </tr>
                                            </thead>
                                            <tbody></tbody>
                                        </table>
                                    </div>
                                    <div class="modal-footer">
                                        <button type="reset" class="btn btn-default" data-dismiss="modal">Close</button>
                                        <button id="saveRequisition" type="submit" class="btn btn-danger">Save Order</button>
                                    </div>
                                    </div>
                            </form>



                        </div>

                    <!--/.Content-->
                </div>
            </div>

        </div>
        </main>

JavaScript的

<script>
    //Show model
    function addNewOrder()
    {
        $("#NewOrderForm").modal();
    }

    // Add Multiple Record
    $("#addToList").click(function (e) {
        e.preventDefault();

        if ($.trim($("#SrNo").val()) == "" || $.trim($("#txtItemcode").val()) == "" || $.trim($("#Qty").val()) == "" || $.trim($("#Reemarks").val()) == "") return;

        var Srno = $("#SrNo").val(),
            items = $("#txtItemcode").val(),
            qty = $("#Qty").val(),
            remark = $("#Reemarks").val(),
            detailsTableBody = $("#detailsTable tbody");

        var ReqItems = '<tr><td>' + Srno + '</td><td>' + items + '</td><td>' + qty + '</td><td>' + remark + '</td><td> <a data-itemId="0" href="#" class="deleteItem">Remove</a></td></tr>';
        detailsTableBody.append(ReqItems);
        clearItem();

        //After Add A New Order In The List
        function clearItem()
        {
            $("#SrNo").val('');
            $("#txtItemcode").val('');
            $("#Qty").val('');
            $("#Reemarks").val('');
        }
        // After Add A New Order In The List, If You Want, You Can Remove

        $(document).on('click', 'a.deleteItem', function (e)

        {
            e.preventDefault();
            var $self = $(this);
            if ($(this).attr('data-itemId') == "0") {
                $(this).parents('tr').css("background-color", "white").fadeOut(800, function () {
                    $(this).remove();
                });
            }
        });
                //After Click Save Button Pass All Data View To Controller For Save Database

        function saveRequisition(data) {
            return $.ajax({
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                type: 'POST',
                url: "/Home/RequisitionInsert", // function save
                data: data,
                success: function (result) {
                    alert(result);
                    location.reload();
                },
                error: function () {
                    alert("Error!")
                }
            });
        }

        //Collect Multiple Order List For Pass To Controller

        $("#saveRequisition").click(function (e)

        {
            e.preventDefault();
            var requisitionArr = [];
            requisitionArr.length = 0;

            $.each($("#detailsTable tbody tr"), function () {

                requisitionArr.push({
                    Srno: $(this).find('td:eq(0)').html(),
                    items: $(this).find('td:eq(1)').html(),
                    qty: $(this).find('td:eq(2)').html(),
                    remark: $(this).find('td:eq(3)').html(),

                });
            });

            var data = JSON.stringify({
                txtRequisitionno: $("#txtRequisitionno").val(),
                txtRequisitionDatepicker: $("#txtRequisitionDatepicker").val(),
                txtjob: $("#txtjob").val(),
                txtApprovedby: $("#txtApprovedby").val(),
                defaultChecked2: $("#defaultChecked2").val(),
                item: requisitionArr
            });

            $.when(saveRequisition(data)).then(function (response) {
                console.log(response);
            }).fail(function (err) {
                console.log(err);
            });
    });

    });


</script>

調節器

[HttpPost]
        public ActionResult RequisitionInsert(Requisition objModel, List<Requisition> oblist)
        {
            try
            {

                int result = objclsRequisition.RequisitionInsert(objModel, oblist);
                if(result==1)
                {
                    ViewBag.Message = "Your record has been inserted Successfully";
                    ModelState.Clear();
                }
                else
                {
                    ViewBag.Message = "Unsucessfull";
                    ModelState.Clear();
                }
                return RedirectToAction("Requisition", "Home");
            }
            catch (Exception)
            {

                throw;
            }

        }

功能

 public int RequisitionInsert(Requisition Req,  List<Requisition> objlist)
        {
            try
            {
                con.Open();
                tr = con.BeginTransaction();

                cmd = new SqlCommand("Sp_RequisitionMainInsert", con);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@ReqNo", Req.ReqNo);
                cmd.Parameters.AddWithValue("@Comp_ID", "1");
                cmd.Parameters.AddWithValue("@GL_Year", "2018-2019");
                cmd.Parameters.AddWithValue("@ReqDate", Req.ReqDate.ToString("yyyy-MM-dd"));
                cmd.Parameters.AddWithValue("@Job", Req.Job);
                cmd.Parameters.AddWithValue("@ApprovedBy", Req.Approvedby);
                cmd.Parameters.AddWithValue("@UserName", System.Web.HttpContext.Current.Session["AgentName"]);
                cmd.Parameters.AddWithValue("@IsApproved", Req.IsApproved);
                cmd.Transaction = tr;
                cmd.ExecuteNonQuery();

                for (int i = 0; i < objlist.Count; i++)
                {
                    cmd = new SqlCommand("Sp_RequisitionDetailInsert", con);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@ReqNo", Req.ReqNo);
                    cmd.Parameters.AddWithValue("@Comp_ID", "1");
                    cmd.Parameters.AddWithValue("@GL_Year", "2018-2019");
                    cmd.Parameters.AddWithValue("@SrNo", Req.Srno);
                    cmd.Parameters.AddWithValue("@ItemCode", Req.ItemCode);
                    cmd.Parameters.AddWithValue("@Qty", Convert.ToDecimal(Req.Qty));
                    cmd.Parameters.AddWithValue("@Remarks", Req.Remarks);
                }

                cmd.Transaction = tr;
                cmd.ExecuteNonQuery();

                tr.Commit();
                return i;
            }
            catch (SqlException sqlex)
            {
                tr.Rollback();
                throw sqlex;  // read all sql error 
            }
            catch (Exception ex)
            {
                tr.Rollback();
                throw ex; // General execption

            }
            finally
            {
                con.Close();
            }
        }

問題在於api模型定義。 您已將方法參數聲明為此

[HttpPost]
public ActionResult RequisitionInsert(Requisition objModel, List<Requisition> oblist)

但是,在MVC中發布數據時,您只能有一個輸入模型,因為該模型將直接從完整的請求正文中進行解析。 要解決此問題,請創建一個請求模型,在其中定義要從正文讀取的屬性。

public class RequestModel
{
    public string TxtRequisitionno { get; set; }
    public string TxtRequisitionDatepicker { get; set; }
    public string Txtjob { get; set; }
    public string TxtApprovedby { get; set; }
    public string DefaultChecked2 { get; set; }
    public List<Requisition> Items { get; set; }
}

然后用

[HttpPost]
public ActionResult RequisitionInsert(RequestModel model)

注意:我已聲明RequestModel中的屬性與您嘗試從客戶端發送的屬性相同客戶端模型:

{
    txtRequisitionno: $("#txtRequisitionno").val(),
    txtRequisitionDatepicker: $("#txtRequisitionDatepicker").val(),
    txtjob: $("#txtjob").val(),
    txtApprovedby: $("#txtApprovedby").val(),
    defaultChecked2: $("#defaultChecked2").val(),
    item: requisitionArr
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM