当我在 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 中添加控制器时,%VisualStudioInstallLocation%\Common7\IDE\ItemTemplates\CSharp\Web\MVC 4\CodeTemplates\AddController
将调用文本模板(Controller.tt,位于 下)。此模板开头为:
<#@ 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();
}
如您所见,空//
s 在所有方法中都是一致的,并且不会在这些行上放置任何内容。如果您确实担心,您可以编辑模板以删除这些行(我建议先备份)
我想模板的作者希望强调该操作方法应该主要由GET
Rates Controller 的方法使用(而不是通过 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)
{
}
<#
}
#>
}
}