ASP.NET MVC jQuery Post Error

时间:2016-04-17 15:08:02

标签: jquery ajax asp.net-mvc

我正在尝试创建一个简单的MVC应用程序,使用AJAX Post方法将数据插入到数据库中,并且收到未处理的异常错误。我构造的代码与教程页面相同,因此我在查找错误来源时遇到了一些麻烦。不确定我是否可能需要修改sql连接。任何帮助表示赞赏。谢谢!

Model:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MvcAjax.Models
{
    public class Employee
    {
        public string Name { get; set; }
        public string City { get; set; }
        public string Address { get; set; }
    }
}

View:
@{
    ViewBag.Title = "AddEmployee";
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<script>

    $(document).ready(function () {
//function will be called on button click having id btnsave
        $("#btnSave").click(function () {
            $.ajax(
            {
                type: "POST", //HTTP POST Method
                url: "Home/AddEmployee", // Controller/View
                data: { //Passing data
                    Name: $("#txtName").val(), //Reading text box values using Jquery
                    City: $("#txtAddress").val(),
                    Address: $("#txtcity").val()
                }

            });

        });
    });

</script>  
<br /><br />
<fieldset>
    <div class="form-horizontal">
        <div class="editor-label">
            Name
        </div>
        <div class="editor-label">
            <input type="text" id="txtName" />
        </div>

        <div class="editor-label">
            Address
        </div>
        <div class="editor-label">
            <input type="text" id="txtAddress" />
        </div>

        <div class="editor-label">
            City
        </div>
        <div class="editor-label">
            <input type="text" id="txtcity" />
        </div>
        <div class="editor-label">
            <br />
            <input class="btn-default" type="button" id="btnSave" value="Save" />
        </div>
    </div>
</fieldset>  

Controller:
using MvcAjax.Models;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcAjax.Controllers
{
    public class HomeController : Controller
    {
        private SqlConnection con;

        // GET: AddEmployee  
        public ActionResult AddEmployee()
        {

            return View();
        }
        //Post method to add details    
        [HttpPost]
        public ActionResult AddEmployee(Employee obj)
        {
            AddDetails(obj);

            return View();
        }

        //To Handle connection related activities    
        private void connection()
        {
            string constr = ConfigurationManager.ConnectionStrings["SqlConn"].ToString();
            con = new SqlConnection(constr);

        }
        private void AddDetails(Employee obj)
        {
            connection();
            SqlCommand com = new SqlCommand("AddEmp", con);
            com.CommandType = CommandType.StoredProcedure;
            com.Parameters.AddWithValue("@Name", obj.Name);
            com.Parameters.AddWithValue("@City", obj.City);
            com.Parameters.AddWithValue("@Address", obj.Address);
            con.Open();
            com.ExecuteNonQuery();
            con.Close();

        }
    }

}

Error:
http://localhost:99999/Home/AddEmployee


The view 'AddEmployee' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Home/AddEmployee.aspx
~/Views/Home/AddEmployee.ascx
~/Views/Shared/AddEmployee.aspx
~/Views/Shared/AddEmployee.ascx
~/Views/Home/AddEmployee.cshtml
~/Views/Home/AddEmployee.vbhtml
~/Views/Shared/AddEmployee.cshtml
~/Views/Shared/AddEmployee.vbhtml 
  Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

 Exception Details: System.InvalidOperationException: The view 'AddEmployee' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Home/AddEmployee.aspx
~/Views/Home/AddEmployee.ascx
~/Views/Shared/AddEmployee.aspx
~/Views/Shared/AddEmployee.ascx
~/Views/Home/AddEmployee.cshtml
~/Views/Home/AddEmployee.vbhtml
~/Views/Shared/AddEmployee.cshtml
~/Views/Shared/AddEmployee.vbhtml

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

3 个答案:

答案 0 :(得分:2)

如果您正在发布期待POST结果的帖子,请返回Json而不是View

return Json(new {Success = true});

或您想要返回的任何状态。如果您返回浏览器的Web视图,则返回视图效果很好。

请记住,如果您想使用GET返回JSON数据,则需要以不同方式构造return语句

return Json(new {Success = true}, JsonRequestBehavior.AllowGet);

答案 1 :(得分:2)

我认为您没有正确位置的AddEmployee视图。它应放在Views\Home文件夹中。

请确保按照@Anthony的建议更新您的行动。

return Json(new {Success = true});

答案 2 :(得分:0)

至于你的信息

http://localhost:99999/Home/AddEmployee

只是 HTTP GET 请求,但您将方法修饰为

//Post method to add details    
        [HttpPost]
        public ActionResult AddEmployee(Employee obj)
        {
            AddDetails(obj);

            return View();
        }
带有Employee对象的

HTTP POST 。因此出现错误。

编辑您的帖子应该像这样返回

 [HttpPost]
        public JsonResult AddEmployee(Employee obj)
        {
            AddDetails(obj);

            return Json(obj);
        }

而不是ActionResult。