Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将字符串呈现为MVC视图?_C#_Asp.net Mvc 4 - Fatal编程技术网

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

C# 如何将字符串呈现为MVC视图?,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我在一个开发大型ASP.NET MVC应用程序的团队中。我希望有一个占位符,当选择了团队尚未实现的菜单选项时,显示字符串“尚未实现”。我首先返回this.Content(“尚未实现”)但是这个方法不会呈现包含菜单的布局,所以测试人员会被引入死胡同。有没有一种方法可以在布局中只渲染该字符串而不创建视图?我不想创建一个只会在项目完成后被删除的视图 编辑:如果我不清楚,我很抱歉,但目标是将任意字符串呈现为视图。建议我创建一个.cshtml文件并不能回答我的问题。我将通过实现错误处理和抛出异常来解决我的

我在一个开发大型ASP.NET MVC应用程序的团队中。我希望有一个占位符,当选择了团队尚未实现的菜单选项时,显示字符串“尚未实现”。我首先返回
this.Content(“尚未实现”)
但是这个方法不会呈现包含菜单的布局,所以测试人员会被引入死胡同。有没有一种方法可以在布局中只渲染该字符串而不创建视图?我不想创建一个只会在项目完成后被删除的视图


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

通常你可以使用:

return Content("Not yet Implemented");
但是。。。您可以在Shared中添加一个视图,而不是返回
Content(“XXX”)
您可以调用return
View(“Shared/NotImplementedView”)

与前一个类似,如果您的操作在那里(因为它将被调用),您也可以添加一个视图,但现在将“
尚未实现”
”标记作为其内容。一旦实现,您就可以替换它的内容。这样,您不需要指定视图名称,只需执行
returnview()(如果视图与操作同名)

或者您可以执行以下操作:

string notImplementedYet = "Not implemented yet.";
return View((object)notImplementedYet);
类似于Darin Dimitrov前几天提醒我的:


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

我不确定这是否适合您正在尝试的操作,因为您只想在页面上显示错误,但这里有一个函数,允许您将任何razor视图呈现为字符串:

 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();
   }
 }

这将允许您以字符串的形式获取任何razor视图,然后您可以使用它执行任何操作。真正酷的是,你也可以传递模型…

你可以使用ViewBag来实现这一点。在服务器端,执行以下操作:

ViewBag.MyString = "hello world";
return View();
在您的标记中:

@ViewBag.MyString

错误页面和抛出new NotImplementedException()
有什么问题?你可以在共享文件夹中使用通用视图。但这正是他想要的。我在其他地方也这样做过,但由于应用程序的这一部分是如何组合在一起的(我向你保证这不值得一提),它在这里不起作用。所以,也许你需要解释更多,以便能够帮助你找到更好的选择。正如我在上面的编辑中所说,我很好奇是否可以将任意字符串呈现为视图。如果不可能,那很好,但我想确切地知道。我不知道你编辑了这个问题。。。如果内容选项可以有一个过载,包括你的布局可以帮助你。是的,我觉得这应该是一个存在的东西,但它似乎没有。