我对C#有点经验,但我对MVC4来说是全新的,并且正在努力解决一些简单问题。我试图在现有应用程序中进行一些编辑,从控制器开始,我想通过进行基本测试来确保操作正确运行。
我想在控制器中有一个动作返回一个ViewResult,里面有一些我可以操作的基本内容(只是一个“Hello World”或类似的东西),只是为了确保动作返回一个在我开始给它更复杂的功能之前,ViewResult正确。
目前我的控制器中的操作如下:
public ActionResult Test()
{
var v = new ViewResult();
v.ViewData["Message"] = "HELLO THERE";
return v;
}
显然你可以看到我在努力学习基础知识。我已经看了一些教程,但是那些似乎专注于如何在Visual Studio中创建一个新的View 项目的上下文中创建一个View,这不是我想要的。我想将一些基本内容放入操作中的视图对象中,这样我就可以测试我是否正确调用了操作,而不是制作包含视图数据的实际文件。
任何见解总是受到赞赏。
答案 0 :(得分:1)
您可以轻松地执行此操作...只需创建一个与操作同名的空视图即可完成
public ActionResult Test()
{
ViewData["Message"] = "HELLO THERE";
return view();
}
创建没有任何内容的测试视图
答案 1 :(得分:1)
如果您想在没有视图的情况下执行某些操作,则无法返回加载视图的ActionResult
(在您的情况下,一个名为'Test'的视图未指定)。
你可以创建一个无效控制器(至少我认为 - 我从来没有这样做过) - 但为什么不创建一个只打印消息的简单视图:
public ActionResult Test()
{
ViewData["Message"] = "HELLO THERE";
return View("DebugView");
}
然后DebugView.cshtml只是:
@ViewData["Message"]
测试以上并且有效。正如其他人指出的那样,你可以归还其他东西。
答案 2 :(得分:1)
按照惯例,您的意图是拥有一个从每个控制器操作返回的视图文件。如果您想要使用调试视图,只需创建一个临时视图文件并将该字符串传递给视图。你可以返回其他数据类型,比如Json,只返回数据(减去一个视图),试试这个。
public ActionResult SomeActionMethod() {
return Content("hello world!");
}
虽然我们讨论这个问题,但如果你在控制器周围编写单元测试可能会更好。理想情况下,视图不应修改您的数据,只应具有基本视图逻辑并显示您的视图模型。单元测试将允许您查看控制器操作返回的内容,而不必创建调试视图或触摸任何与视图相关的内容。
答案 3 :(得分:0)
你可以通过mvc返回任何东西,而不仅仅是行动结果
public string Test()
{
return "Hello World!!!";
}