PDA

View Full Version : سوال: عدم ذخیره در بانک با Ajax



armm1388
دوشنبه 14 بهمن 1398, 16:05 عصر
با سلام
یک مثال در مورد نحوه ذخیره اطلاعات در بانک توسط Ajax، در اینترنت پیدا کردم.
آن را پیاده سازی کردم ولی جواب نمی دهد. مدل را ساختم . کنترلر را و بعد ویو را.
ویویی بنام AddEmployee.cshtml را داخل فولدر Home که زیر فولدر Views می باشد ساخته ام. آیا مسیر درست است؟
و بجای دستور :
string constr = ConfigurationManager.ConnectionStrings["SqlConn"].ToString();
دستور زیر را نوشته ام:
string constr = "Data Source=192.168.38.4;Initial Catalog=ContosoUniversity1;Persist Security Info=True;User ID=sa;Password=au";

سپس برای فراخوانی آن، در فایل Index.cshtml دستور زیر را نوشتم.
<div class="col-md-4">
<div class="navbar-collapse collapse">
<ul class="btn btn-success">
<li>@Html.ActionLink("SQL Server ذخیره رکورد- با", "AddEmployee", "Home")</li>
</ul>
</div>
</div>
بعد از اجرا صفحه ای باز می شود و سه تا باکس را پر می کنم ولی با فشردن دکمه save هیچ اتفاقی نمی افتد.
چرا؟
آیا دستور : com.CommandType = CommandType.StoredProcedure; در این موضوع اثر دارد؟
ممنون می شوم جواب بفرمایید؟

Empmodel.cs
public class EmpModel
{
public string Name { get; set; }
public string City { get; set; }
public string Address { get; set; }

}

++++++++++++++++
HomeController.cs
public class HomeController : Controller
{
private SqlConnection con;

// GET: Home
public ActionResult AddEmployee()
{

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

return View();
}

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

}
//To add Records into database
private void AddDetails(EmpModel 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();

}
}

+++++++++++++
AddEmployee.cshtml:
@{
ViewBag.Title = "www.compilemode.com (http://www.compilemode.com/)";
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function () {
$("#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>


+++++++++++++++++

ali_md110
دوشنبه 14 بهمن 1398, 20:48 عصر
کدهاتون درون تگ # قرار بدید و ازسال کنید خیلی بهم ریخته هستند
ویزوال استودیو ابزار breakpoint دارد میتونید برای ردیابی اجرای کد استفاده کنید
در ضمن از inspect element مرورگر هم میتونید برای خطاهای سمت کلاینت استفاده کنید
در اینجا ورودی متد post از نوع یک شی مشخصEmpModel obj هست دز صورتیکه شما دارید مقادیر را از کنترلهای html پاس میدهید
بجای آن ار BeginForm استفاده کنید و فرم را پاس دهید