加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【MVC】传值大全参考

发布时间:2020-12-16 03:21:07 所属栏目:百科 来源:网络整理
导读:写在前面的 传参方式 Controller与View之间 ViewBag ViewData JS Ajax URL Action与Action之间Controller内部 总结 写在前面的 ?? 传值的问题在MVC中也算是一个比较丰富的机制,我们可以借助各种方式和工具组件在Controller和View中来回传递参数。常用的有这
  • 写在前面的
  • 传参方式
    • Controller与View之间
      • ViewBag
      • ViewData
      • JS
        • Ajax
        • URL
    • Action与Action之间Controller内部
  • 总结

写在前面的

??传值的问题在MVC中也算是一个比较丰富的机制,我们可以借助各种方式和工具组件在Controller和View中来回传递参数。常用的有这么几种方式,Controller<—->View;Action<—->Action;以及Controller<—->Controller

传参方式

Controller与View之间

ViewBag

  • ViewBag比较灵活,可以自定义属性,和ViewData类似。但是ViewBag的好处就是可以通过HtmlHelper的TextBox来自动实现数据绑定。
//在控制器中

    ViewBag.mvcname= "myfirstframe";    
    ViewBag.mvcads= "fast";
//在页面中

    <div>
        @Html.TextBox("mvcname")    
        @ViewBag.mvcads
    </div>
  • 同样,viewBag还可以用来拼页面,这样,我们就可以把所有的页面写在Controller里面,简化View的页面代码,如图:

  • 在页面中直接使用拼接好的页面即可:

ViewData

  • 和ViewBag的用法相差不是很多,ViewData的形式采用Key-Value来进行识别并显示Value值。
//在controller中

    String mvc ="what an ammazing frame is!"
    ViewData["stringMvc"]=mvc;
//在页面中

    <div>
        <font>How do you like MVC?</font>
    </div>
    <div>
        <font>@ViewData["stringMvc"]</font>
    </div>

JS

  • 通过JS传值的方法就比较多了,我们最常用的是AJAX,其次还有通过ulr来传值

Ajax

  • 使用AJAX传值的话是一种比较方便的方式,主要是运用了JQ中封装好的一些传值方法,来参与View与Controller之间的相互传值。
//页面中的方法
/*ajax有一套自己的固定写法,如下所示,只要按照固定的格式,就可以实现前后台相互传值*/

    $(document).ready(function () {
    $.ajax({
        //指定Url,格式“Controller名字/Action方法名”
        url: 'SubmitSuccess/GetAnnounce',//传值方式,post/get
        type: 'get',//指定返回值类型
        dataType: 'json',//返回值data如果不是空值,也就是返回成功,那么执行function中的代码
        success: function (data) {
            for (var i = 0; i < data.length; i++) {
                $(".content" + i).html(data[i].announceContent);
            }
            executeQueryName();
        }
    });
//在SubmitSusseccController中是这样的形式
    public ActionResult GetAnnounce()
        {
            List<t_announce> data = new List<t_announce>();
            SubmitSuccessBLL getallannounce = new SubmitSuccessBLL();
            data = getallannounce.GetAnnounce();
            return Json(data,JsonRequestBehavior.AllowGet);
        }

URL

  • 再有就是通过地址栏中的url进行传值了,网上有好多已经封装好的JS代码,这里就不再展示了,我用一个简单的例子来展示一下简单的获取原理。
//rul传值可以灵活运用,可以在View与Controller之间,也可以是view与view之间
    //我们要做的就是把地址栏的rul改变,然后再获取并修改
    //html片段
    <body>
        <div id="mvcurl">MVC URL GET</div>
    <body>
    //如何将div的innerHtml获取
    <script type="text/javascript"> function geturl(){ var prop = document.getElementById("mvcurl"); //获取内容 var propdoc= prop.innerHTML; //将地址栏rul添加参数 var url = "mvcurl" + "?" + "content" + propdoc; window.location.assign(url); } </script>
  • 在执行完上面的方法之后,地址栏的链接会变成:

  • 我们在另一个页面或者后台怎么获取这个innerHTML呢?

<script type="text/javascript"> var url = location.href; //将链接地址以"?"划分成为两部分,获取第二部分 var url2 = url.split("?")[1]; //将链接的第二部分再以“=”划分,取第二部分 var url3= url2.split("=")[1]; //这个时候我们就获取到了“MVC URL GET”的内容 var content = url3; </script>

Action与Action之间(Controller内部)

  • 如果需要在Controller内部传值的话,就需要用到TempData,和ViewData一样,只不过ViewData做不到不同Action之间的传值罢了。
public ActionResult Indexa(){
        TempData["mvc"]="mvc oh yellllllllll";
        return View();
    }

    public ActionResult Indexb(){
        String mvc = TempData["name"].toString;
        return View();
    }

总结

??还有一种controller与controller之间传值的方法,由于不常用,暂时在这里就不做说明了,总之掌握以上常用的方法,会很方便的我们对页面的调用和传值。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读