使用ajax加载视图,而不调用操作

时间:2014-01-09 11:51:45

标签: ajax asp.net-mvc-4

我正在完成我的第一个MVC项目,并且正在努力解决一些问题。到目前为止,我已经能够使用以下代码行

加载带有ajax的局部视图
@Ajax.ActionLink("New Car User", "Index", "CarUser", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divForms", InsertionMode = InsertionMode.Replace })

我知道这是在Car Car用户控制器上加载附加到Index操作的局部视图:

public ActionResult Index()
    {
        return View(db.CarUsers.ToList());
    }

我想要做的是在同一个控制器上加载附加到Create操作的视图:

[HttpPost]
    public ActionResult Create(CarUser caruser)
    {
        if (ModelState.IsValid)
        {
            db.CarUsers.Add(caruser);
            db.SaveChanges();
            return RedirectToAction("Index", "Home");
        }

        return View(caruser);
    }

但是当我使用时:

@Ajax.ActionLink("New Car User", "Create", "CarUser", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divForms", InsertionMode = InsertionMode.Replace })

它基本上只是在我的表中创建一个空行。谁能告诉我哪里出错了?我想我需要改变控制器上的动作,但我不知道怎么做?

非常感谢

1 个答案:

答案 0 :(得分:0)

解决了!

原来我有两个名为create的行为:

[HttpGet]
    public ActionResult Create()
    {
        return View();
    }

    //
    // POST: /CarUser/Create

    [HttpPost]
    public ActionResult Create(CarUser caruser)
    {
        if (ModelState.IsValid)
        {
            db.CarUsers.Add(caruser);
            db.SaveChanges();
            return RedirectToAction("Index", "Home");
        }

        return View(caruser);
    }

我将第一个动作方法标记为[HttpGet]并将@ AJAX.ActionLink更改为HttpMethod =“GET”已经有效