通过ViewData.Model和View的参数传递数据有什么区别?

时间:2011-02-02 02:54:13

标签: asp.net-mvc

我是asp.net mvc的新手。这可能是一个“幼稚”的问题。 : - )

我们可以使用两种方法(当然还有其他方法)从控制器内传递数据,如下所示:

ViewData.Model=obj;
return View();

return View(obj);

每种方法的优缺点是什么?

2 个答案:

答案 0 :(得分:3)

两个片段都是相同的,第一个选项直接传递给对象模型,而第二个选项作为参数传递给View,但最终会传递给对象模型。

如果您查看View()方法,可以看到内部调用的第一个代码段。

protected internal ViewResult View(object model) {
    return View(null, null, model);
}

protected internal virtual ViewResult View(string viewName, string masterName, object model) {
    if (model != null) {
        ViewData.Model = model;
    }

    ....
}

因此两者都是相同的,但第一种是直接的方法。

答案 1 :(得分:1)

从技术上讲,我认为没有任何区别......

我更倾向于使用第二种方法对我来说只是“感觉”更好......