项目是MVC4项目,然后想用里面的web api 的东西,于是乎就在 WebApiConfig 中做了如下配置
public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); } }
,然后在 项目根目录下的Controllers文件夹中新增 FileUpLoadController ,定义的Action 如下代码:
public class FileUpLoadController : ApiController { [HttpPost] public Task<UpLoadBaseResponse> Post(){} [HttpGet] public ListImageResponse GetFileList(string imgListPath, string imgAllowFiles){} }
项目调试中发现 使用 url:http://localhost:55759/api/FileUpLoad/GetFileList?imgListPath=news访问不到action。经过测试发现是 因为 GetFileList 必须传递2个参数才行,但是实际使用中,有时用不到的参数是不传的。那么问题来了:我的路由 应该怎么配置才能让action接受任意数量的参数 ?
public ListImageResponse GetFileList(string imgListPath, string imgAllowFiles = string.Empty) 试试
1、首先你应该先添加一个区域api
2、在区域中添加控制器FileUpLoad
3、然后写方法
4、测试
如果说要多个参数的话可以传入对象,然后需要多少个参数在对象中加上就可以了。没有传入的话,对象会有个默认值。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace mvcWeb.Areas.api.Controllers { public class FileUpLoadController : Controller { // // GET: /api/FileUpLoad/ public string GetFileList(DemoModel model) { return model.imgListPath; } } public class DemoModel { public string Parm1 { get; set; } public string imgListPath { get; set; } } }
你这个 Controller 为啥不是 继承 的 ApiController
@BoyLife: 这个是一般的controller
可空参数或者有默认值参数