Asp.net mvc MVC任何操作都会返回同名的部分视图

Asp.net mvc MVC任何操作都会返回同名的部分视图,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我有一个控制器,其中所有操作方法都包含相同的代码: [ActionName("pretty-url")] public ActionResult Something() { return PartialView(); } [ActionName("another-pretty-url")] public ActionResult SomethingElse() { return PartialView(); } 我将我的部分视图命名为pretty url.cshtml格式,这

我有一个控制器,其中所有操作方法都包含相同的代码:

[ActionName("pretty-url")]
public ActionResult Something() {
  return PartialView();
}    

[ActionName("another-pretty-url")]
public ActionResult SomethingElse() {
  return PartialView();
}
我将我的部分视图命名为
pretty url.cshtml
格式,这些视图被很好地拾取,一切正常

由于控制器中的每个操作都会执行完全相同的操作并返回相同的操作,因此我希望让我的控制器查找正确命名的视图并如上所述返回它,而不必显式地实现它

我该怎么做


TIA

我将创建一个操作并将视图名称作为参数传递

public ActionResult Something(string viewName) 
{
  return PartialView(viewName);
}

我将使用一个字符串参数向控制器添加一个新方法,并使用它加载正确的局部视图

public ActionResult Show(string PartialName)
{
    return PartialView(PartialName);
}

现在不再使用
http://your.domain/pretty_url
您必须使用
http://your.domain/show/pretty_url
但这将适用于以后添加的任何新的局部视图。

返回PartialView(“yourviewname”,model)这并没有真正的帮助,我仍然需要为每个操作实现一个操作方法,这就是我想要阻止的。谢谢。只需在控制器中声明一个方法,并用[NoAction]属性修饰它,然后使用它。(或者最好将其放在基类中)或定义单个操作并返回转发/重定向到该操作。(从一段时间以来,我不记得是否是return ActionRedirect()或其他东西)通过这种方式,可以访问不允许的部分视图,对吗?@Mark-您问题中的示例根本没有安全功能。您可以在这个方法中添加任何需要的逻辑。@Mark-Oh,对不起。为了回答您的问题,是的,任何人都可以访问任何视图,并且由于没有验证,如果您使用不存在的视图,将有HTTP 500。这对我来说很有效-我还添加了一个自定义路由,这样我的URL中就没有
某物