【问题标题】:How to return a partial view in a controller in ASP.NET MVC3?如何在 ASP.NET MVC3 的控制器中返回部分视图?
【发布时间】:2012-05-15 16:13:42
【问题描述】:

我有一个控制器,它的一个方法(操作)访问我的项目数据库。该方法检查项目类型。仅当从我的数据库中检索到的项目属于特定类型时,如何显示我的部分视图?

控制器动作示例:

public ActionResult CheckItem(Koko model)
{
    var item = db.Items.Where(item => item.Number == model.Number).First();
    if(item.Type=="EXPENSIVE")
    {
       //show partial view (enable my partial view in one of my Views)
    }
}

【问题讨论】:

    标签: asp.net-mvc-3 controller partial-views


    【解决方案1】:

    您可以返回 PartialView 操作结果:

    public ActionResult CheckItem(Koko model)
    {
        var item = db.Items.Where(item => item.Number == model.Number).First();
        if (item.Type=="EXPENSIVE")
        {
            return PartialView("name of the partial", someViewModel);
        }
    
        ...
    }
    

    现在控制器动作将返回部分 HTML。这显然意味着您可能需要使用 AJAX 来调用此控制器操作,否则您将获得部分视图替换当前浏览器窗口。在 AJAX 成功回调中,您可以在 DOM 中重新注入部分 HTML 以查看更新。

    【讨论】:

    • ahaha...我认为我做错了...实际上,我的部分视图仅包含按钮...如果项目是特定类型,它只会在浏览器.... 作为回报 PartialView("name of the partial", someViewModel);什么是 someViewModel,我的局部视图只包含按钮...
    • 如果你不需要模型,你可以省略这个参数。它基本上代表了您可以传递给局部视图的模型。
    • 我认为这不是您应该在控制器中执行的操作。它仅与 UI 相关,因此应在您的视图中处理。只需在您的视图中检查您的模型是否具有某种类型(您的属性)并相应地添加按钮。 Darin 的这个答案准确地显示了您的要求,但不是您想要的(这是由于您的问题描述不佳)。
    • 我知道这更像是一个与 UI 相关的问题......但是,将查询/lambda 代码放在您的视图中是一个好习惯吗?我还想在我的视图中检查我的项目类型,如果不在我的视图中显示查询代码,我怎么能做到这一点?
    • 你确实不应该在你的 UI 中查询你的数据库;但是,您的设置是什么?你怎么称呼这个方法?有了更多信息,我们可能会为您提供更多更好的建议来解决这个问题(而不是快速修复)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多