#javascript #jquery #ajax #asp.net-mvc
#javascript #jquery #ajax #asp.net-mvc
Вопрос:
У меня есть представление, которое состоит из выпадающего списка и некоторых меток. На основе выбора значения из выпадающего списка соответствующие данные должны быть заполнены на ярлыках.
Я использовал ajax jquery для отправки на сервер на основе выпадающего списка, но не смог получить данные, поскольку мой метод действия httppost уже возвращает правильные данные, но они не отображаются.
Выпадающий код javascript
$(function () {
$("#Year").change(function () {
var Year = $('#Year').val();
// var str = $(this).val();
if (Year != "" || Year != "--Select--") {
//alert("hi");
$.ajax({
type: "POST",
url: '@Url.Action("Index", "TeamProbReview")',
data: { empcode: Year },
dataType: "json",
success:function(msg){ } });
//function successFunc(data, status) { $('#txtTradeQty').val(data); } //alert("success" data $('#txtTradeQty').val());
//function errorFunc() { alert('error'); } successFunc, alert(data);
}
else { alert("Pls Select a Employee"); }
});
});//end of doc ready
</script>
Код контроллера
public ActionResult Index(string empcode)
{
DropdownValue();
data.spx_Probation_display_mvc(empcode);
//TeamProbReviewModel tmProbRe = new TeamProbReviewModel();
var emp = data.spx_Probation_display();
var tmProbRe1 = (from e in emp
select new TeamProbReviewModel
{
emp_name = e.emp_name,
Ecode = e.emp_no,
Department = e.Department
//Role = e.FunctionalRole,
//AttendanceLocation = e.attnlocation,
//DateofJoining = e.JOINDATE,
//ExpectedDOC = e.expected_doc,
//ProbationPeriod = e.Probation_Period
}).FirstOrDefault();
//List<TeamProbReviewModel> ls = new List<TeamProbReviewModel>(EmpItems.ToList());
//var emplist = (IEnumerable<TeamProbReviewModel>)ls;
//ViewData["Person"] = new SelectList(iPersonList, "Id", "Name");
//List<Student1> ls = data.spx_students(2, "vikas").ToList<Student1>();
return View(tmProbRe1);
}
Комментарии:
1. $.ajax({ тип: «POST», url: ‘@Url.Action(«Index», «TeamProbReview»)’, данные: { empcode: Year }, Тип данных: «html», успех: функция (данные) { $(‘#Year’).val(); }
2. извините, здесь никто не даст вам простой встроенный код, вам нужно показать свои усилия
3. И теперь, в чем проблема? все выглядит нормально
4. код вызывает метод post, но он не заполняет данные в представлении, как в actionmethod, я создаю объект класса model, сохраняю в нем значения и возвращаю его в представлении.
5. вы пробовали отлаживать значение «data» в ajax success, они в правильном формате?
Ответ №1:
<select id="Year">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<span id="lblSpan"></span>
$(document).ready(function () {
$("#Year").change(function () {
var Year = $(this).val();
if (Year != "Select") {
$.ajax({
url: '/TeamProbReview/Index',
type: 'post',
dataType: 'json',
data: { empcode: Year },
success: function (msg) {//tmProbRe1 result catch in msg and show in labal
if (msg != null) {
$("#lblSpan").text(msg);
}
}
});
}
else {
alert("Please select emp code");
}
});
});
[HttpPost]
public ActionResult Index(string empcode)
{
var tmProbRe1 = (from e in emp
where e.empcode==empcode
select new TeamProbReviewModel
{ emp_name = e.emp_name,
Ecode = e.emp_no,
Department = e.Department
}).FirstOrDefault();
return Json(tmProbRe1, JsonRequestBehavior.AllowGet);
}
retun result in json
Комментарии:
1. var obj1 = JSON.parse(msg);$(«#lblSpan»).text(obj1); изменить код строки в jquery
2. У меня есть представление, которое состоит из выпадающего списка и некоторых меток, например @Html.DisplayFor(ModelItem => ModelItem. Ecode и на основе выбора из выпадающего списка с помощью ajax я отправляю элемент управления в метод HttpPost метода action и возвращаю данные в объект класса модели, но не могу получить их в представлении. Это проблема ajax????
3. вы должны использовать для этого json @Html.DisplayFor(ModelItem => ModelItem,new{id =»lblSpan»}) и привязать идентификатор к значению json в функции успеха
4. можете ли вы показать мне пример привязки идентификатора к значению json в функции успеха.
5. уже сделано в примере успеха: function(msg){$(«lblSpan»).val(msg);} или дайте мне результат, который приходит в msg
Ответ №2:
Если я понял, вы хотите только сделать AJAX-запрос и посмотреть, как значения волшебным образом привязаны к просмотру. Это так не работает. Вы должны обработать свои результаты AJAX в success
функции (см. Документы jQuery):
$.ajax({
// ...
success: function(data) {
if (data amp;amp; data.label1)
$('label1').text(data.label1);
}
});
Итак, если вы хотите волшебную привязку данных, изучите некоторые концепции MVVM и изучите соответствующие библиотеки, такие как AngularJS или KnockoutJS
UPD:
Для работы с JSON в ASP.NET вам нужен такой пакет, как Newtonsoft.Json
. Это поможет вам сериализовать объект модели в контроллере, а затем заполнить его в представлении. Есть много примеров использования, например http://www.codeproject.com/Articles/78928/Create-JSON-from-C-using-JSON-Library . Да благословит вас Google
Комментарии:
1. Я хочу извлекать значения из объекта класса модели, которые я возвращаю в контроллер после выпадающего списка post на сервер с использованием ajax.
Ответ №3:
<script type="text/javascript">
$(function () {
$("#Year").change(function () {
var Year = $(this).val();
if (Year != "Select") {
$.ajax({
url: '/TeamProbReview/Index',
type: 'post',
dataType: 'json',
data: { empcode: Year },
success: function (result) {
$("#Ecode").val(result.Ecode);
$("#EmpName").val(result.emp_name);
$("#Department").val(result.Department);
$("#Role").val(result.Role);
$("#AttendanceLocation").val(result.AttendanceLocation);
//$("#DateofJoining").val(result.DateofJoining);
$("#ProbationPeriod").val(result.ProbationPeriod);
}
});
}
else {
alert("Please select emp code");
}
});
});//end of doc ready
</script>
Ответ №4:
$("#drpop").change(function () {
var code = $(this).val();
$.ajax({
url: '/Ordering/OrderingTable',
type: 'post',
datatype: 'json',
data: { OperCode: code },
success:function(msg){
alert(msg);
} }); });
[HttpPost]
public ActionResult OrderingTable(string OperCode)
{
Orderingbll order = new Orderingbll();
var result = order.ListCategory(OperCode);//here you write your code
return Json(result,JsonRequestBehavior.AllowGet);
}