Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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/6/rest/5.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# asp.net mvc4一个操作有两个不同的视图_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# asp.net mvc4一个操作有两个不同的视图

C# asp.net mvc4一个操作有两个不同的视图,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我需要对Kaminy/Kaminitopky和Kaminy/Kaminitopky/5有两种不同的看法。 我怎么能那样做呢 public class KaminyController : Controller { // // GET: /Kaminy/ public ActionResult Index() { return View(); } // GET: /Kaminy/KaminniTopky public Act

我需要对Kaminy/Kaminitopky和Kaminy/Kaminitopky/5有两种不同的看法。 我怎么能那样做呢

public class KaminyController : Controller
{
    //
    // GET: /Kaminy/
    public ActionResult Index()
    {
        return View();
    }

    // GET: /Kaminy/KaminniTopky
    public ActionResult KaminniTopky()
    {
        return View();
    }

    // GET: /Kaminy/KaminniTopky/5
    public ActionResult KaminniTopky(int id)
    {
        return View();
    }
}

@Stephen Muecke的想法有其优点,您可以将其组合为:

public ActionResult KaminniTopky(int? id)
{
   if (!id.HasValue)
   {
      return View();
   }
   else
   {
      return View("OtherViewName");
   }
}
还有一些重载也会占用模型-
返回视图(someModel)
返回视图(“其他视图名称”,someModel)分别为

在MVC 5中,您可以:

[Route("Kaminy/KaminniTopky")] 
public ActionResult KaminniTopky()
{
    return View();
}

[Route("Kaminy/KaminniTopky/{id}")] 
public ActionResult KaminniTopky(int id)
{
    return View("OtherViewName");
}

对于
/kaminny/kaminitopky/kaminitopky with other/5
之类的东西,您可以使用路由而不是奇怪的控制器结构来支持其他样式的URL

例如,在
RouteConfig
中:

routes.MapRoute(
            "SomeRoute",
            "/Kaminy/KaminniTopky/KaminniTopkyWithOther/{id}",
            new { controller = "Kaminy", action = "KaminniTopkyWithOther", id = "" }
        );
确保这在默认路由之前

那么,调用什么动作并不重要,只要它与路由中定义的相同

public ActionResult KaminniTopkyWithOther(int id)
{
    return View("OtherViewName");
}

您只需要一个带有可空参数的方法
public ActionResult-kaminitopky(int?id)
,然后您就可以使用
if(id.HasValue)
要确定要显示哪个视图,当用户尝试导航到第一个建议时,第一个建议将立即引发异常。现在,我觉得我偷了你的答案:-\n这就是我在没有咖啡的情况下堆叠时发生的情况!谢谢,我还有一个问题。如何创建支持此路径的控制器。例如:/Kaminy/kaminitopky/kaminitopky with other/5您需要将其添加到路由中,所以您的最后一个答案可以帮助我找到根问题的新解决方案:I did:routes.MapRoute(名称:“ShowKaminy”,url:“Kaminy/kaminitopky/{id}),默认值:new{controller=“Kaminy”,action=“Show”} ); 和外接程序Kaminy controller:public ActionResult Show(int id){return View();},现在这个URL是有效的:Kaminy/kaminitopky/2