При добавлении записи в Oracle 11g, он говорит, что успешно, но запись не добавлена, возвращает пустую страницу сведений - PullRequest
0 голосов
/ 04 апреля 2019

Я новичок в ASP.Net MVC C #.Я пытаюсь добавить новую запись в базу данных Oracle 11g, используя ASP.Net MVC C # и хранимые процедуры.Но это не добавляет, когда я заполняю форму и нажимаю «отправить», он говорит, что успешно добавлено, но когда я проверяю базу данных, записи там нет.

Я просмотрел несколько сайтов и использовал шаблоны вПриведенные ими примеры, тем не менее, не дают решения.Кажется, что код и уровень доступа к данным работают, и приложение не выдает никаких ошибок.

Уровень доступа к данным:

public string Insert(Participant participant)
{
    string newParticipant = "";

    try
    {
        oracleCommand = new OracleCommand("InsertProcedures.register", oracleConnection);
        oracleCommand.CommandType = CommandType.StoredProcedure;

        oracleCommand.Parameters.Add(new OracleParameter("fname", OracleDbType.Varchar2, 20)).Value = participant.FirstName;
        oracleCommand.Parameters.Add(new OracleParameter("vmiddlename", OracleDbType.Varchar2, 12)).Value = participant.MiddleName;
        oracleCommand.Parameters.Add(new OracleParameter("lname", OracleDbType.Varchar2, 35)).Value = participant.LastName;
        oracleCommand.Parameters.Add(new OracleParameter("pname", OracleDbType.Varchar2, 20)).Value = participant.PreferredName;
        oracleCommand.Parameters.Add(new OracleParameter("dob", OracleDbType.Date)).Value = participant.DateOfBirth;
        oracleCommand.Parameters.Add(new OracleParameter("gender", OracleDbType.Varchar2, 4)).Value = participant.Gender;
        oracleCommand.Parameters.Add(new OracleParameter("createdby", OracleDbType.Varchar2, 25)).Value = participant.CreatedBy;
        oracleCommand.Parameters.Add("resultCursor", OracleDbType.RefCursor).Direction = ParameterDirection.Output;

        oracleConnection.Open();
        oracleCommand.ExecuteNonQuery();
    }
    catch
    {
        return newParticipant = "";
    }
    oracleConnection.Close();
    return newParticipant;
}

Контроллер:

[HttpGet]
public ActionResult AddNewParticipant()
{
    return View();
}

[HttpPost]
public ActionResult AddNewParticipant(Participant participant)
{
    participant.DateOfBirth = Convert.ToDateTime(participant.DateOfBirth);

    if (ModelState.IsValid)
    {
        string result = DAL.Insert(participant);

        ViewBag.Message = "Participant Added Successfully";
        TempData["addResult"] = result;
        ModelState.Clear();
        return RedirectToAction("ShowAllDetails");
    }            
    else
    {
         ModelState.AddModelError("", "Error in saving data");
         return View();
    }
}

Просмотр:

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <script src="~/Scripts/jquery-3.3.1.min.js"></script>
    <script src="~/js/DatePicker.js"></script>
</head>
<body>
    <h2>Add New</h2>
    @using (Html.BeginForm())
    {
        <div class="row">
            <div class="col-sm-6 col-xs-12">
                @Html.ValidationSummary(true, "", new { @class = "text-danger" })
                <form asp-action="AddParticipant" method="post" role="form">
                    @Html.AntiForgeryToken()
                    <div class="row form-group">
                        <div class="col-sm-3 addLabel">
                            @Html.LabelFor(model => model.FirstName, htmlAttributes: new { @class="control-label"})
                        </div>
                        <div class="col-sm-8 addInput">
                            @Html.EditorFor(model => model.FirstName, new { htmlAttributes = new { @class = "form-control", @value = "First Name" } })
                            @Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" })
                        </div>
                    </div>
                    <div class="row form-group">
                        <div class="col-sm-3 addLabel">
                            @Html.LabelFor(model => model.MiddleName, htmlAttributes: new { @class = "control-label" })
                        </div>
                        <div class="col-sm-8 addInput">
                            @Html.EditorFor(model => model.MiddleName, new { htmlAttributes = new { @class = "form-control" } })
                            @Html.ValidationMessageFor(model => model.MiddleName, "", new { @class = "text-danger" })
                        </div>
                    </div>
                    <div class="row form-group">
                        <div class="col-sm-3 addLabel">
                            @Html.LabelFor(model => model.LastName, htmlAttributes: new { @class = "control-label" })
                        </div>
                        <div class="col-sm-8 addInput">
                            @Html.EditorFor(model => model.LastName, new { htmlAttributes = new { @class = "form-control" } })
                            @Html.ValidationMessageFor(model => model.LastName, "", new { @class = "text-danger" })
                        </div>
                    </div>
                    <div class="row form-group">
                        <div class="col-sm-3 addLabel">
                            @Html.LabelFor(model => model.PreferredName, htmlAttributes: new { @class = "control-label" })
                        </div>
                        <div class="col-sm-8 addInput">
                            @Html.EditorFor(model => model.PreferredName, new { htmlAttributes = new { @class = "form-control" } })
                            @Html.ValidationMessageFor(model => model.PreferredName, "", new { @class = "text-danger" })
                        </div>
                    </div>
                    <div class="row form-group">
                        <div class="col-sm-3 addLabel">
                            @Html.LabelFor(model => model.DateOfBirth, htmlAttributes: new { @class = "control-label" })
                        </div>
                        <div class="col-sm-8 addInput">
                            @Html.EditorFor(model => model.DateOfBirth, new { htmlAttributes = new { @class = "form-control date-picker", @placeholder = "mm/dd/yyyy" } })
                            @Html.ValidationMessageFor(model => model.DateOfBirth, "", new { @class = "text-danger" })
                        </div>
                    </div>
                    <div class="row form-group">
                        <div class="col-sm-3 addLabel">
                            @Html.LabelFor(model => model.Gender, htmlAttributes: new { @class = "control-label" })
                        </div>
                        <div class="col-sm-8 addInput">
                            @Html.DropDownListFor(model => model.Gender, new List<SelectListItem>
                            {
                                new SelectListItem{Text = "Male", Value = "M"},
                                new SelectListItem{Text = "Female", Value = "F"},
                                new SelectListItem{Text = "Transgender", Value = "T"},
                            }, "Choose Gender", new { htmlAttributes = new { @class = "form-control" } })
                            @Html.ValidationMessageFor(model => model.Gender, "", new { @class = "text-danger" })
                        </div>
                    </div>
                    <div class="addButtons form-group">
                        <input type="submit" value="Submit" class="btn btn-default btn-dark" />
                        <input type="reset" value="Cancel" class="btn btn-default btn-dark" />
                    </div>
                </form>
            </div>
            <h3>@ViewBag.Message</h3>
        </div>
    }
    <div style="color:blue; font-family:Arial">
        @Html.ActionLink("Back to Records", "ShowAllDetails")
    </div>
</body>
</html>
...