-1

我在一个构建大型 ASP.NET MVC 应用程序的团队中。I'd like to have a place holder that shows the string "Not Yet Implemented" when a menu option is selected that has not been implemented by the team yet. 我从返回开始,this.Content("Not yet Implemented");但此方法不会呈现包含菜单的布局,因此测试人员会陷入死胡同。有没有办法在不创建视图的情况下仅在布局中呈现该字符串?我不想创建一个在项目完成后将被删除的视图。

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

4

4 回答 4

2

通常你可以使用:

return Content("Not yet Implemented");

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

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

于 2013-05-13T15:26:15.717 回答
0

或者你可以这样做:

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

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

MVC 4 动作结果器

我个人会抛出NotImplementedException或比返回字符串作为模型更优雅的东西,但如果它是在开发过程中用于保存页面,我猜字符串是可以的。

于 2013-05-13T15:29:19.153 回答
0

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

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

在您的标记中:

@ViewBag.MyString
于 2013-05-13T15:44:55.830 回答
-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();
   }
 }

这将允许您将任何剃刀视图作为字符串获取,然后您可以用它做任何您想做的事情。真正酷的是你也可以传入模型......

于 2013-05-13T15:41:01.887 回答