我可以在Http get和Http Post中的同一个动作方法的视图中返回不同的对象吗?

时间:2012-05-04 05:53:32

标签: asp.net-mvc asp.net-mvc-3 razor http-post

我想在HTTPGet方法中返回一个对象,并在控制器中的相同操作方法的HTTPPost方法中返回不同的对象,但我不知道在视图中写什么,要获取哪个模型。 这是控制器代码,我一直在尝试

[HttpGet]
 public ActionResult Create()
        {
            var intSrNo = Convert.ToInt64(TempData["sr_no"]);
            MEntities obj_entity = new MEntities();
            UDP_get_a_Result obj_proc = obj_entity.UDP_get_a(intSrNo).SingleOrDefault(); 
             return View(obj_proc);
        } 

[HttpPost]
        public ActionResult Create(Table_a obj_a)
        {           
            if (ModelState.IsValid)
            {
                db.Table_a.AddObject(obj_a);
                db.SaveChanges();
                return RedirectToAction("Index");  
            }
            return View(obj_a);
        }

我很困惑在视图中写入哪个模型。(Table_a或UDP_get_a_Result)我希望HttpGet在加载页面时显示值,在点击提交时显示HttpPost。

查看

@model ABC.models.Table_a           
@{
    ViewBag.Title = "Create";
}

2 个答案:

答案 0 :(得分:0)

视图只能强类型化为单个类。您不能让不同的控制器操作返回相同的视图并将不同的模型传递给此视图。您可以使用视图模型:定义一个类,该类将包含此视图所需的所有信息,然后让控制器操作填充此视图模型并将其传递给此视图。

答案 1 :(得分:0)

我认为将视图键入某个基类(对象)然后将模型转换为基于get / post所需的任何内容都可行。我不想保持它。 :-D