Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何在通过部分视图提交表单后更新父视图?_Asp.net Mvc_Asp.net Ajax_Partial Views - Fatal编程技术网

Asp.net mvc 如何在通过部分视图提交表单后更新父视图?

Asp.net mvc 如何在通过部分视图提交表单后更新父视图?,asp.net-mvc,asp.net-ajax,partial-views,Asp.net Mvc,Asp.net Ajax,Partial Views,我有一个视图,当教师登录时,它列出了学生的完整详细信息,还列出了教师登录时交给学生的任务。如果教师想要为学生创建一个新任务,他单击createnew链接,该链接依次向控制器发出Ajax调用: @Ajax.ActionLink("Create", "CreateTask", "Task", new { id = Model.StudentId }, new AjaxOptions { HttpMethod = "GET",

我有一个视图,当教师登录时,它列出了学生的完整详细信息,还列出了教师登录时交给学生的任务。如果教师想要为学生创建一个新任务,他单击createnew链接,该链接依次向控制器发出Ajax调用:

@Ajax.ActionLink("Create", "CreateTask", "Task", new { id = Model.StudentId },
new AjaxOptions
            {
                HttpMethod = "GET",
                InsertionMode = InsertionMode.Replace,
                UpdateTargetId = "create-div"
            }, new { @class = "btn btn-default" })
它返回一个局部视图

[HttpGet]
public ActionResult CreateTask(int ?id)
    {

        //........
        return PartialView("PartialViews/Task/_CreateTaskPartial");
    }
在部分视图中,我使用Ajax.BeginForm提交数据以创建实际任务,如下所示

 @using (Ajax.BeginForm("CreateTask", "Task",new AjaxOptions { UpdateTargetId = "create-div", InsertionMode = InsertionMode.Replace }))
{
    // Form data
}
最后,在CreateTask控制器中,我创建了任务

[HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include="TaskId")] Task @task)
    {

        if (ModelState.IsValid)
        {
            db.Tasks.Add(@task);
            db.SaveChanges();

            // If everything is successfull return empty     

            return new EmptyResult();                
        }

        // If model errors send the view back
        return PartialView("PartialViews/Task/_CreateTaskPartial", @task);
    }
它成功创建新任务,但不更新列出学生详细信息和已创建任务列表的主视图。我必须刷新页面才能看到添加的最后一个任务

如何使通过部分视图添加第六个任务时,成功后更新父视图并列出第六个任务


我在MVC方面不是很有经验,所以请纠正我哪里做错了。

我解决了它,我得到了来自的帮助来解决它

因此,我所做的不是在创建任务时返回一个EmptyResult(),而是返回一个JSON对象

if (ModelState.IsValid)
    {
        db.Tasks.Add(@task);
        db.SaveChanges();

        // If everything is successfull return empty     

        //return new EmptyResult();
         return Json(new { ok = true, url = Url.Action("Details","Student",new{id=@event.StudentId}) });              
    }
部分视图中的一个d,用于提交表单以创建我在Ajax.BeginForm中的AjaxOptions中添加的OnSuccess参数,该参数调用javascript函数

@using (Ajax.BeginForm("CreateTask", "Task",new AjaxOptions { UpdateTargetId = "create-div", InsertionMode = InsertionMode.Replace,OnSuccess = "onSuccess" }))
{
// Form data
}
最后在“onSuccess”函数中,我检查结果是否正确,然后重定向到控制器给出的结果中的url

var onSuccess = function doIt(result) {
        if (result.ok) {
            window.location.href = result.url;
        }
    };