可以在同一控制器中调用另一个操作方法并作为部分视图返回需要建议

时间:2016-04-27 12:18:48

标签: javascript jquery ajax asp.net-mvc

我需要一些建议并知道如何以最佳方式解决这个问题。让我解释一下我做了什么,想做什么。

我在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);
    });

我希望我的问题清楚且有权。

0 个答案:

没有答案