我需要一些建议并知道如何以最佳方式解决这个问题。让我解释一下我做了什么,想做什么。
我在Partial View中有一些图形元素,当我点击其中一个元素时,会激活一个javascript函数,然后从元素上的data-attributes收集的一些数据通过AJAX传递给Action Method in Controller只是将数据添加到数据库中。
脚本1:
// Function to add new Timeunit
function newTimeunit(week, hours, employee, order) {
$.ajax({
url: "/Employees/NewTimeunit",
type: "GET",
cache: false,
data: { a: week, b: hours, c: employee, d: order },
success: function () {
console.log('AJAX successful');
//location.reload();
// Call other script to update Partial View ???
}
})
}
员工控制器中的操作方法:
// Add new TimeUnit
public ActionResult NewTimeunit(int a, int b, int c, int d)
{
var timeunit = new Timeunit
{
WeekNumber = a,
NumberHours = b,
EmployeeID = c,
OrderID = d
};
db.Timeunits.Add(timeunit);
db.SaveChanges();
//return new EmptyResult();
return RedirectToAction("Index", "Home"); // ??????
}
数据库更新后我需要更新部分视图,我的问题是哪个选项最好?没有必要从这个控制器返回一些东西!?我可以调用另一个Action方法(见下文)并将其作为此Action Action的局部视图返回,还是应该在第一个脚本成功后调用另一个javascript函数将所有数据加载到局部视图中并更新页面?或者还有其他更好的选择吗?
此操作方法读取数据库中的所有内容并将其作为部分视图返回:
public ActionResult LoadPartialViewContent()
{
....code here read data from the database and create the
model...
return PartialView("PartialView2", model);
}
脚本2,从Controller加载到局部视图(当我启动应用程序以在部分视图中加载内容时运行此脚本):
function loadView() {
$.ajax({
url: "/Employees/LoadPartialViewContent",
type: "GET",
dataType: "HTML",
cache: false,
data: {}
})
.done(function (updateView) {
$("#PartialView").html(updateView);
});
我希望我的问题清楚且有权。