从视图中传递参数给controller也有很多种方式

方法一(推荐):
路由

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}",
defaults: new { id = RouteParameter.Optional }
);

控制器

public string Get()
{
return "web api,get by id and value";
}
public string Get(int id,string value)
{
return "web api,get by id and value";
}

视图

$.ajax({
  type: 'get',
  url: 'api/values/get',
  success: function (data) {
    alert(data);
    },
  error: function () {
    setContainer('ERROR!');
  }
});
$.ajax({
  type: 'get',
  url: 'api/values/get?id=12&value=1234',
  success: function (data) {
    alert(data);
  },
  error: function () {
    setContainer('ERROR!');
  }
});

优点:参数直接在url中写入,不用定制多个路由规则,一个路由规则就可以实现多种格式的请求

注意:在web api中post请求的参数要用[FromBody]或者[FromUri]修饰,这时候不能用这个方法传参数
,因为[FromBody]传参的规则与普通的不一样,不是key=value的格式,直接是=value
路由规则不用修改
控制器post方法

public string Post([FromBody]string value)
{
  return "web api,post by value";
}

视图

$.ajax({
    type: 'post',
    url: 'api/values/post',
    dataType: 'json', //在data为json格式时,这句必须加上
    data: { "": "meterid" },
    contenttype: 'application/json',
    success: function (data) {
    alert(data);
    },
    error: function () {
        setContainer('ERROR!');
    }
});        

不过以data的方式传参最好限定于post请求,因为在put和delete中会出错(不知道有没有人能实现)

还有一个更好的解决方法就是用[FromUri]来修饰post方法的参数,这时候参数的传递可以和普通参数
的传递方式一样

方法二(不推荐):

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}/{value}",
defaults: new { id = RouteParameter.Optional }
);

控制器

public string Get()
{
return "web api,get by id and value";
}
public string Get(int id,string value)
{
return "web api,get by id and value";
}

视图

$.ajax({
    type: 'get',
    url: 'api/values/get',
    success: function (data) {
        alert(data);
    },
    error: function () {
        setContainer('ERROR!');
    }
});
$.ajax({
    type: 'get',
    url: 'api/values/get/12/1234',
    success: function (data) {
        alert(data);
    },
    error: function () {
        setContainer('ERROR!');
    }
});    


缺点:这种方式要根据控制器中方法的参数的不用,制定不同的路由规则,然后写相应的url,跟方法

一的不同之处就是路由规则还有url的写法,

其他:
就是前面说的以data方式传参,不推荐,因为put和delete会出错,而且data格式不一样的时候可能还

要设置dataType和contenttype等格式

mvc初学controller参数传递感想的更多相关文章

  1. Spring mvc框架 controller间跳转 ,重定向 ,传参

     一.需求背景     1. 需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示.   @Req ...

  2. 浅谈MVC页面之间参数传递

    关于MVC页面之间的传值,有多种方式,下面,我们就Html.RenderAction 方式 和 Html.RenderPartial 方式 来给大家分享一下有什么不同. 一.Html.RenderAc ...

  3. ASP.NET MVC控制器Controller中参数

    前述文章参见:ASP.NET MVC控制器Controller 绪论 之前的控制器返回的均为常量字符串,接下来展示如何获取请求传来的参数,而返回"动态"的字符串. 可以在操作方法B ...

  4. 自己动手做Web框架—MVC+Front Controller

    在我前面一篇博文<逃脱Asp.Net MVC框架的枷锁,使用Razor视图引擎>发表之后,很多人关心,脱离了之后怎么办?那么这可以说是它的续篇了. 同时,这也是eLiteWeb开源软件的一 ...

  5. Asp.net MVC 中Controller返回值类型ActionResult

    [Asp.net MVC中Controller返回值类型] 在mvc中所有的controller类都必须使用"Controller"后缀来命名并且对Action也有一定的要求: 必 ...

  6. MVC:Controller向View传值方式总结

    Controller向View传值方式总结 总结发现ASP.NET MVC中Controller向View传值的方式共有6种,分别是: ViewBag ViewData TempData 向普通Vie ...

  7. 返璞归真 asp.net mvc (3) - Controller/Action

    原文:返璞归真 asp.net mvc (3) - Controller/Action [索引页] [源码下载] 返璞归真 asp.net mvc (3) - Controller/Action 作者 ...

  8. MVC+Front Controller

    MVC+Front Controller 在我前面一篇博文<逃脱Asp.Net MVC框架的枷锁,使用Razor视图引擎>发表之后,很多人关心,脱离了之后怎么办?那么这可以说是它的续篇了. ...

  9. spring mvc在Controller中获取ApplicationContext

    spring mvc在Controller中获取ApplicationContext web.xml中进行正常的beans.xml和spring-mvc.xml的配置: 需要在beans.xml中进行 ...

随机推荐

  1. 【InversionCount 逆序对数 + MergeSort】

    Definition of Inversion: Let (A[0], A[1] ... A[n], n <= 50) be a sequence of n numbers. If i < ...

  2. Sass@规则

    @importSass 支持所有 CSS3 的 @ 规则, 以及一些 Sass 专属的规则,也被称为“指令(directives)”.Sass 扩展了 CSS 的 @import 规则,让它能够引入 ...

  3. IL(Intermediate Language)

    释义: IL是.NET框架中中间语言(Intermediate Language)的缩写.使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但此时编译出来的程序代码并不是CPU ...

  4. linq读书笔记1-linq 初步

    至于linq是什么之类的已经有过太多的文章介绍,亦不清楚的胡朋友可以自己搜索一下便可以得到大量的答案 为了体验linq究竟能带给我们什么体验,我们直接从代码入手: string[] words = n ...

  5. UITableView 属性集合

    UITableView-------表视图--继承UIScrollView并遵守NSCoding协议 属性 frame-------------设置控件的位置和大小 backgroundColor-- ...

  6. OC基础 可变数组与不可变数组的使用

    OC基础 可变数组与不可变数组的使用 1.不可变数组 1.1不可变数组的创建 //实例方法 NSArray *array = [[NSArray alloc] initWithObjects:&quo ...

  7. 关于局域网内IIS部署网站,本机可访问,而网内其他用户无法访问问题的解决方法

    在Window7操作系统中安装配置好IIS后,在本地IIS上部署网站程序没有问题,但是局域网等远程用户不能正常访问网站程序,提示“Internet Explorer 无法显示该网页”. 问题解决思路如 ...

  8. js迭代器模式

    在迭代器模式中,通常有一个包含某种数据的集合的对象.该数据可能储存在一个复杂数据结构内部,而要提供一种简单 的方法能够访问数据结构中的每个元素. 实现如下: //迭代器模式 var agg = (fu ...

  9. PHP连接Microsoft SQL Server 2005/2008

    PHP自带的MSSQL扩展php_mssql.dll原来是给SQL Server 2000用的,难怪连接不上2008?! -_-!!要使用SQL Server 2005以上版本,就要用到微软为PHP提 ...

  10. Remove掉Request.QueryString

    好久上博客来了,最近有点忙,有点懒. 今天在解决一个Request.QueryString 传值的问题上遇到了,当不是第一次加载时需要把Request.QueryString的值赋值为null,刚开始 ...