Asp.net mvc 为什么要在新控制器的索引操作上方添加空注释(仅为“/”)?

Asp.net mvc 为什么要在新控制器的索引操作上方添加空注释(仅为“/”)?,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,在Visual Studio中添加新控制器时,它会创建如下代码: public class RatesController : Controller { // <-- Why is this empty comment added? // GET: /Rates/ public ActionResult Index() { return View(); } } 公共类费率控制器:控制器 { //它没有任何用途-它只是某人使用

在Visual Studio中添加新控制器时,它会创建如下代码:

public class RatesController : Controller
{
    //     <-- Why is this empty comment added?
    // GET: /Rates/
    public ActionResult Index()
    {
        return View();
    }
}
公共类费率控制器:控制器
{

//它没有任何用途-它只是某人使用过的一种特定样式。当您在Visual Studio中添加控制器时,会调用一个文本模板(controller.tt,在
%VisualStudioInstallLocation%\Common7\IDE\ItemTemplates\CSharp\Web\MVC 4\codemplates\AddController
下)。此模板以以下形式启动:

<#@ template language="C#" HostSpecific="True" #>
<#
MvcTextTemplateHost mvcHost = (MvcTextTemplateHost)(Host);
#>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace <#= mvcHost.Namespace #>
{
    public class <#= mvcHost.ControllerName #> : Controller
    {
        //
        // GET: <#= (!String.IsNullOrEmpty(mvcHost.AreaName)) ? ("/" + mvcHost.AreaName) : String.Empty #>/<#= mvcHost.ControllerRootName #>/

        public ActionResult Index()
        {
            return View();
        }

<#
if(mvcHost.AddActionMethods) {
#>
        //
        // GET: <#= (!String.IsNullOrEmpty(mvcHost.AreaName)) ? ("/" + mvcHost.AreaName) : String.Empty #>/<#= mvcHost.ControllerRootName #>/Details/5

        public ActionResult Details(int id)
        {
            return View();
        }

        //
        // GET: <#= (!String.IsNullOrEmpty(mvcHost.AreaName)) ? ("/" + mvcHost.AreaName) : String.Empty #>/<#= mvcHost.ControllerRootName #>/Create

        public ActionResult Create()
        {
            return View();
        }

使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.Mvc;
名称空间
{
公共类:控制器
{
//
//获取://
公共行动结果索引()
{
返回视图();
}
//
//获取http://Details/5
公共行动结果详细信息(int id)
{
返回视图();
}
//
//获取://Create
公共操作结果创建()
{
返回视图();
}

正如您所看到的,空的
/
在所有方法中都是一致的,并且这些行上永远不会放置任何内容。如果您确实担心这一点,您可以编辑模板以删除这些行(我建议先进行备份)

我想模板的作者希望强调,该操作方法应该主要由费率控制器的
GET
方法使用(而不是vs POST、DELETE或其他方法)

下面是另一个示例模板(ApiController.tt)。请在操作之前注释GET、POST和DELETE注释:

<#@ template language="C#" HostSpecific="True" #>
<#
MvcTextTemplateHost mvcHost = (MvcTextTemplateHost)(Host);
string pathFragment = mvcHost.ControllerRootName.ToLowerInvariant();
#>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

namespace <#= mvcHost.Namespace #>
{
    public class <#= mvcHost.ControllerName #> : ApiController
    {
<#
if(mvcHost.AddActionMethods) {
#>
        // GET api/<#= pathFragment #>
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/<#= pathFragment #>/5
        public string Get(int id)
        {
            return "value";
        }

        // POST api/<#= pathFragment #>
        public void Post([FromBody]string value)
        {
        }

        // PUT api/<#= pathFragment #>/5
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/<#= pathFragment #>/5
        public void Delete(int id)
        {
        }
<#
}
#>
    }
}

使用制度;
使用System.Collections.Generic;
使用System.Linq;
Net系统;
使用System.Net.Http;
使用System.Web.Http;
名称空间
{
公共类:ApiController
{
//获取api/
公共IEnumerable Get()
{
返回新字符串[]{“value1”,“value2”};
}
//获取api//5
公共字符串Get(int-id)
{
返回“值”;
}
//后api/
公共作废帖子([FromBody]字符串值)
{
}
//放置api//5
公共void Put(int id,[FromBody]字符串值)
{
}
//删除api//5
公共无效删除(int-id)
{
}
}
}
枯燥无味的答案是“因为这就是模板中的内容”。除非作者出现,否则你不太可能得到答案。