2017-09-15 57 views
0

在.NET MVC中,我发现它始终遵循以下命名约定:控制器中的RouteName,它是一个名为'RouteName.cshtml'的视图。.Net MVC控制器不同的路由名称使用相同的cshtml作为视图

我的问题是如何使用不同的RouteName使用SAME cshtml文件?

+0

的可能的复制[如何返回ActionResult与特定的视图(不是控制器名称)](https://stackoverflow.com/questions/26359192/how-to-return-actionresult-with-specific-view-not-the-controller-name) – mjwills

回答

1

默认视图()方法的默认匹配操作名称,但您可以使用View(String)方法来指定路径所需CSHTML,像下面的例子:

// in action method that is *not* RouteName 
return View("RouteName"); 
+0

谢谢。目前,我'返回视图(myViewModel)',你能告诉我在哪里可以找到API,以便我可以指定路由名称和模型到我的视图? – n179911

+0

请访问https://msdn.microsoft.com/zh-CN/library/system.web.mvc.controller.view(v=vs.118).aspx#M:System.Web.Mvc.Controller 。查看 您正在寻找的内容听起来像是重载(string,object)的参数列表,其中字符串参数是视图名称,而对象参数是您的模型。 –

0

你可以使用partials重新使用CSHTML块;取决于你试图解决的问题,这可能是更好的解决方案。

你能编辑你的问题并添加更多的上下文吗?为什么需要从多个ActionResult方法呈现相同的cshtml?你想达到什么目的?

0

例如,有一个名为About.cshtml 鉴于你有2点作用的方法和他们两个都使用About.cshtml

所以,你可以尝试

public ActionResult Index() 
     { 
     var model = "view model"; 
     // Pass view model as the second parameter 
     return View("About", model); 
     } 

public ActionResult About() 
     { 
      ViewBag.Message = "Your application description page."; 
      // Not need pass view name because view name and action method name are same (About 
      return View(); 
     } 
相关问题