1

我对 C# 有一定的经验,但对 MVC4 完全陌生,并且正在为一些简单的事情而苦苦挣扎。我正在尝试在现有应用程序中进行一些编辑,从控制器开始,我想通过进行基本测试来确保操作正确运行。

我希望控制器中的一个操作返回一个 ViewResult,其中包含一些我可以摆弄的基本内容(只是一个“Hello World”或类似的东西),只是为了确保该操作在之前正确返回一个 ViewResult我开始赋予它更复杂的功能。

目前,我的控制器中的操作如下所示:

    public ActionResult Test()
    {
        var v = new ViewResult();
        v.ViewData["Message"] = "HELLO THERE";
        return v;
    }

显然你可以看到我在基础知识上挣扎。我看过一些教程,但那些似乎侧重于如何在 Visual Studio 中创建新视图项目的上下文中创建视图,这不是我想要的。我只想将一些基本内容放到动作中的视图对象中,这样我就可以测试我是否正确调用了动作,而不是制作一个包含视图数据的实际文件。

任何见解总是受到赞赏。

4

4 回答 4

1

你可以很容易地做到这一点......只需创建一个与操作同名的空视图,你就完成了

public ActionResult Test()
    {

        ViewData["Message"] = "HELLO THERE";
        return view();
    }

创建没有任何内容的测试视图

于 2013-09-05T19:47:38.510 回答
1

如果您想在没有视图的情况下做某事,则不能返回ActionResult加载视图的视图(在您的情况下,您未指定名为“Test”的视图)。

您可以创建一个 void 控制器(我认为至少 - 我从未做过) - 但为什么不创建一个简单的视图来打印您的消息:

public ActionResult Test()
{
    ViewData["Message"] = "HELLO THERE";
    return View("DebugView");
}

然后 DebugView.cshtml 就是:

@ViewData["Message"]

测试了上述并有效。正如其他人指出的那样,您可以退回其他东西。

于 2013-09-05T19:47:57.780 回答
1

按照惯例,您应该拥有一个从每个控制器操作返回的视图文件。如果您想使用调试视图,只需创建一个临时视图文件并将字符串传递给视图。您可以返回其他数据类型,如 Json,只返回数据(减去视图),试试这个。

public ActionResult SomeActionMethod() {
    return Content("hello world!");
}

虽然我们正在讨论这个主题,但如果您围绕控制器编写单元测试可能会更好。理想情况下,视图不应修改您的数据,而应仅具有基本视图逻辑并显示您的视图模型。单元测试将允许您查看控制器操作返回的内容,而不必创建调试视图或触摸与视图相关的任何内容。

于 2013-09-05T19:48:25.050 回答
0

您可以通过 mvc 返回任何东西,而不仅仅是操作结果

    public string Test()
    {
        return "Hello World!!!";
    }
于 2013-09-05T19:49:29.780 回答