Member 13522501 Ответов: 0

Хранение данных в БД с помощью ajax in ASP.NET MVC не будет запущен


Привет Я хочу, чтобы сохранить данные в БД с помощью AJAX в ASP.NET в MVC. Я читаю очень много статей и пишу их в своем проекте, но сталкиваюсь с ошибками.
Я не знаю, как это работает должным образом.
Например :

Мой код в контроллере :
public ActionResult InsertData_5()
{
    return View();
}

[HttpPost]
public ActionResult InsertData_5(Personal objdata)
{
    try
    {
        //SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings[connectionString].ToString());
        string constr = "Data Source=192.168.100.1;Initial Catalog=ContosoUniversity1;Persist Security Info=True;User ID=sa;Password=Abhar70";
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings[constr].ToString());

        con.Open();
        SqlCommand cmd = new SqlCommand("InsertData_SP", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@FirstName", objdata.FirstName);
        cmd.Parameters.AddWithValue("@LastName", objdata.LastName);
        cmd.Parameters.AddWithValue("@Phone", objdata.Phone);
        cmd.ExecuteNonQuery();
        con.Close();

    }
    catch (Exception)
    {
        throw;
    }
    
    return View("InsertData_5");
}

+++++++++++++++++
Содержит процедуру хранения :
USE [ContosoUniversity1]
GO
/****** Object:  StoredProcedure [dbo].[InsertData_SP]    Script Date: 02/18/2020 15:04:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Batch submitted through debugger: SQLQuery1.sql|0|0|C:\Users\Administrator\AppData\Local\Temp\~vsF4A9.sql
ALTER PROCEDURE [dbo].[InsertData_SP]
(
    @FirstName nvarchar(MAX),
    @LastName nvarchar(MAX),
    @Phone nvarchar(MAX)
)
AS
BEGIN
    INSERT INTO Personal_tbl2
    (
        FirstName
        ,LastName
        ,Phone
    )
    Values
    (
        @FirstName
        ,@LastName
        ,@Phone
    )
END

+++++++++++++++++
Содержит точку зрения . файл : InsertData_5.cshtml :
@model ContosoUniversity.Models.Personal

@using System.Web.Optimization;

@{
    ViewBag.Title = "InsertData_5";
}

<h2>Index</h2>

<div id="divEmp">

    @using (Ajax.BeginForm("InsertData_5", "Post", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divEmp" }))
    {
        <table>
        <tbody>
            <tr>
                <td>FirstName</td>
                <td>                    
                </td>
            </tr>
            <tr>
                <td>LastName</td>
                <td>                    
                </td>
            </tr>
            <tr>
                <td>Phone</td>
                <td>                    
                </td>
            </tr>
            <tr>
                <td>                    
                </td>
            </tr>
        </tbody>
        </table>
        
        <script>
            $(document).ready(function () {
                $("#btnsubmit").click(function () {
                    $.ajax(
                    {
                        type: "POST",
                        url: "Home/InsertData_5",
                        data: {
                            FirstName: $("#txtFirstName").val(),
                            LastName: $("#txtLastName").val(),
                            Phone: $("#txtPhone").val()
                        }

                    });

                });
            });
        </script>
    }
</div>

++++++++++++++++
Содержит файл : Index.cshtml :
У меня есть кнопка в этом файле. Когда программа запускается, я нажимаю кнопку. Он получает данные. Но не храните их в БД.
@{ ViewBag.Title = "first page";  }
<div class="jumbotron">
    <h1>aa</h1>
</div>

<div class="row">
    <div class="col-md-4">
        <div class="navbar-collapse collapse">
            <ul class="btn btn-default">
                <li>@Html.ActionLink("save by Ajax", "InsertData_5", "Home")</li>            
            </ul>   
        </div>
    </div>
</div>

Что же мне делать?
спасибо

Что я уже пробовал:

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

Richard Deeming

Я пытался исправить форматирование вашего кода, но некоторые из ваших кодов, кажется, исчезли. Нет <input> теги, @Html.TextBoxFor или @Html.EditorFor звонки в любую точку вашего города InsertData_5.cshtml просмотр, так что не будет никаких данных для отправки.

Вы также не описали, в чем заключается проблема. Вам нужно использовать инструменты разработчика Вашего браузера, чтобы изучить запрос AJAX, чтобы увидеть, какую ошибку вы получаете в ответе.

Кроме того, веб-приложение должно НИКОГДА использовать sa для подключения к SQL Server. Это неограниченный пользователь, который может быть использован для уничтожения вашей базы данных, вашего сервера или, возможно, даже всей вашей сети. Используйте определенную учетную запись для вашего приложения, которая имеет только те разрешения, которые требуются вашему приложению.

И я надеюсь, что это не твое настоящее имя. sa пароль, который вы только что опубликовали на публичном форуме!

phil.o

catch (Exception){    throw;}
это контрпродуктивно,так как вы ловите исключение и сразу же бросаете новый пустой без всякого контекста это без использования его информации. Предыдущий контекст начального исключения теряется. Попробуйте сделать что-то полезное в вашем блоке catch: запишите исключение где-нибудь с его деталями (сообщение, трассировка стека), чтобы иметь лучшее представление о том, что происходит.

Richard Deeming

Не совсем. throw; сам по себе повторно выбрасывает исходное исключение, сохраняя трассировку стека.

Все равно нет смысла ловить исключение, если вы просто собираетесь его повторно бросить. Но все не так плохо, как вы предполагаете. :)

phil.o

Спасибо за информацию, Ричард. Я подумал, вспоминая старую статью, посвященную этому; моя память, должно быть, начинает ухудшаться.

ZurdoDev

Мы тоже не знаем, что случилось, потому что вы не сказали нам, в чем ошибка, а я ужасно умею угадывать ошибки.

0 Ответов