我正在建立一个大型ASP.NET MVC应用程序的团队。当选择了尚未由团队实施的菜单选项时,我希望有一个占位符显示字符串“Not Yet Implemented”。我从返回this.Content("Not yet Implemented");
开始,但这种方法不会渲染包含菜单的布局,因此测试人员会陷入死胡同。有没有办法在布局中只渲染该字符串而不创建视图?我不想在项目完成时创建一个只会被删除的视图。
编辑:如果我在这里不清楚,我很抱歉,但目标是将任意字符串渲染为视图。建议我创建一个.cshtml
文件不回答我的问题。我将通过实现错误处理并抛出异常(无论如何感觉更“正确”)来解决我的问题。无论如何我还是要离开这个问题,因为我很好奇我最初想做的事情是否可能。
答案 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提醒我的事情:
我个人会抛出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();
}
}
这将允许您将任何剃刀视图作为字符串,然后您可以使用它执行任何操作。真正酷的是你也可以传递模型......