MVC数据在视图中传递

时间:2017-01-04 16:26:26

标签: c# asp.net .net asp.net-mvc asp.net-mvc-4

我正在制作我的MVC应用程序。我用预定义的参数打开我的视图,如下所示:

return RedirectToAction("PickGroupForHomework", "Account", new {subject_id = id, qty=model.qty });

这很好,数据subject_idqty正确传递。但是,我的视图PickGroupForHomework包含要填充的表单,然后对其进行验证。如果输入无效,则只需使用上一视图中定义的数据subject_idqty重新加载窗口。我是这样做的:

public ActionResult PickGroupForHomework(PickGroupForHomeworkViewModel model)
        {
            ClassDeclarationsDBEntities2 entities = new ClassDeclarationsDBEntities2();
            model.groups = entities.Groups.ToList();
            model.users = entities.Users.ToList();
            int id = model.subject_id;
            var subj = entities.Subjects
                    .Where(b => b.class_id == model.subject_id)
                    .FirstOrDefault();
            if (subj != null)
            {
                model.subject_name = subj.name;
            }
            if (ModelState.IsValid)
            {

            }
            else
            {
                return View(model);
            }
            return View(model);

        }

但是生成的URL不包含我需要的数据,只是一个简单的视图。我该怎么做?

1 个答案:

答案 0 :(得分:0)

为了让你运行wep app,你需要两个动作,一个用于为View设置你的模型,另一个用于实际发布和保存你的数据:

    public ActionResult PickGroupForHomework(int subject_id, int qty)
    {
        //Initialize your model here. Below is just an example.
        ClassDeclarationsDBEntities2 entities = new ClassDeclarationsDBEntities2();

        PickGroupForHomeworkViewModel model = new PickGroupForHomeworkViewModel();

        model.groups = entities.Groups.ToList();
        model.users = entities.Users.ToList();

        model.subject_id = subject_id;
        model.qty = qty;

        return View("PickGroupForHomework", model);
    }

    [HttpPost]
    public ActionResult PickGroupForHomework(PickGroupForHomeworkViewModel model)
    {
        ClassDeclarationsDBEntities2 entities = new ClassDeclarationsDBEntities2();

        int id = model.subject_id;

        var subj = entities.Subjects
                .Where(b => b.class_id == model.subject_id)
                .FirstOrDefault();

        if (subj != null)
        {
            model.subject_name = subj.name;
        }
        if (ModelState.IsValid)
        {
            //Save to database
            [code goes here]

            //return to a View to show your results
            return View("[Your view to see the results]")
        }

        //Model Validation did not pass
        //or exception occurred go back to View
        return View(model);
    }