2013-05-13 52 views
-1

我正在建立一个大型ASP.NET MVC应用程序的团队。我希望有一个占位符,当菜单选项未被团队实现时,显示字符串“Not Yet Implemented”。我通过返回this.Content("Not yet Implemented");开始,但是这种方法并不呈现包含菜单的布局,因此测试人员被引入死胡同。有没有办法在布局内渲染该字符串而不创建视图?我不想创建一个只在项目完成时才被删除的视图。如何渲染一个字符串作为MVC视图?

编辑:对不起,如果我在这里不清楚,但目标是呈现任意字符串作为视图。建议我创建一个.cshtml文件不回答我的问题。我将通过实现错误处理和抛出异常来解决我的问题(无论如何,这感觉更“正确”)。无论如何,我仍然留下这个问题,因为我很好奇,如果我原本想做的事情甚至是可能的。

+1

出了什么问题的错误页面和'抛出新NotImplementedException()'? – CodeCaster 2013-05-13 15:23:21

+1

您可以使用共享文件夹中的通用视图。 – swapneel 2013-05-13 15:26:07

回答

2

通常情况下,你可以使用:

return Content("Not yet Implemented"); 

但是......你可以在共​​享中添加视图,而不是返回Content("XXX")调用返回View("Shared/NotImplementedView");

类似于前面的一个,如果你的动作(因为它会被调用),您还可以添加一个View,但现在将“<h3>Not yet implemented</h3>”标记作为其内容。一旦实施,您可以只更换其内容。这样,您就不需要指定视图名称,只是做return View();(如果视图具有相同的名称作为动作)

+0

我已经完成了其他地方,但由于这部分应用程序如何被放在一起的性质(这是不值得进入我向你保证)它不会在这里工作。 – Mykroft 2013-05-13 16:28:58

+0

因此,也许你需要更多地解释一些事情,以便能够以更好的选择帮助你。 – Romias 2013-05-13 17:16:38

+0

正如我在我上面的编辑中所说,我很好奇,如果有可能呈现任意字符串作为视图。如果这不可能,那很好,但我想确切地知道。 – Mykroft 2013-05-13 17:20:31

0

或者你可以这样做:

string notImplementedYet = "Not implemented yet."; 
return View((object)notImplementedYet); 

阿金让我想起了什么由达林季米特洛夫的一天:

MVC 4 Action Result er

我个人会抛出NotImplementedException或更多的东西比优雅,虽然返回的字符串作为一种模式,但是如果它是一个控股页,而在发展中,我猜字符串是好的。

-1

我不确定这是否适合你要做的事情,因为你只想在页面上显示错误,但是这里有一个函数可以让你把任何剃刀视图渲染成一个字符串:

public string RenderRazorViewToString(string viewName, object model = null) 
{ 
    ViewData.Model = model; 
    using (sw == new System.IO.StringWriter()) 
    { 
    dynamic viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName); 
dynamic viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw); 
viewResult.View.Render(viewContext, sw); 
return sw.GetStringBuilder().ToString(); 
    } 
} 

这将允许您将任何剃须刀视图作为一个字符串,然后您可以做任何你想做的事情。这真的很酷,你也可以通过模型...

+0

但是,这只是他想要的相反。 – SoonDead 2013-05-13 15:55:57

0

你可以使用ViewBag为此。在您的服务器端,这样做:

ViewBag.MyString = "hello world"; 
return View(); 

而且在你的标记:

@ViewBag.MyString 
相关问题