如何将字符串呈现为MVC视图?

时间:2013-05-13 15:20:39

标签: c# asp.net-mvc-4

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

编辑:如果我在这里不清楚,我很抱歉,但目标是将任意字符串渲染为视图。建议我创建一个.cshtml文件不回答我的问题。我将通过实现错误处理并抛出异常(无论如何感觉更“正确”)来解决我的问题。无论如何我还是要离开这个问题,因为我很好奇我最初想做的事情是否可能。

4 个答案:

答案 0 :(得分:2)

通常你可以使用:

return Content("Not yet Implemented");

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

与前一个类似,如果您的操作在那里(因为它将被调用),您还可以添加一个视图,但现在将“<h3>Not yet implemented</h3>”标记作为其内容。实施后,您只需替换其内容即可。这样您就不需要指定视图名称,只需执行return View();(如果视图与操作同名)

答案 1 :(得分:0)

或者你可以这样做:

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

类似于前几天Darin Dimitrov提醒我的事情:

MVC 4 Action Result er

我个人会抛出NotImplementedException或更优雅的东西,而不是将字符串作为模型返回,但如果它是在开发中的持有页面,我猜一个字符串就可以了。

答案 2 :(得分:0)

您可以使用ViewBag。在您的服务器端,执行以下操作:

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

在你的标记中:

@ViewBag.MyString

答案 3 :(得分:-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();
   }
 }

这将允许您将任何剃刀视图作为字符串,然后您可以使用它执行任何操作。真正酷的是你也可以传递模型......