hello world!!!!!

写下自己的一些心得,写下自己问题的方式,写下程序之路的艰辛,希望能够有朝一日成为大牛。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

asp.net mvc js 获取model值。

Posted on 2016-08-18 11:27  陈力  阅读(10452)  评论(0编辑  收藏  举报
cshtml页面部分代码: 
div class="col-sub">
         @using (Html.BeginForm("SaveTTMallConfig", "TTMall", FormMethod.Post, new { id="J_ttmall_form"}))
         {
        <div>
            <fieldset>
                <div id="J_ttmall_config2" class="">
                    <div class="editor-field">
                        <label class="hd">
                            模板主题:</label>
                        @Html.RadioButtonListFor(m => m.Scheme, "mallScheme", System.Web.UI.WebControls.RepeatDirection.Horizontal)
                    </div>
                    <div class="editor-field">
                        <label class="hd">
                            模板规格:</label>
                        @Html.RadioButtonListFor(m => m.Size, "mallSize", System.Web.UI.WebControls.RepeatDirection.Horizontal)
                    </div>
<script>
     //在这里获取m.Scheme,m.Size的值
     //不考虑根据html结构找id等等方法
     //直接获得form封装后的 key value 可以
     //直接获得更改后的model.Scheme等的值 可以
</script>



如上所述,在js中获得表单提交的各个值,或者获得model更改后的值,请帮忙小弟,不胜感激!
 

 

回复讨论(解决方案)

<script type="text/javascript">
    var ss = '@Model.Scheme;
    alert(ss);
</script>
应该不行吧。javascript只能取得页面上的值。 

不过你可以将m.Scheme,m.Size的值赋给hidden field,再在javascript中取。
应该不行吧。javascript只能取得页面上的值。 

不过你可以将m.Scheme,m.Size的值赋给hidden field,再在javascript中取。


如果控制器像页面返回了当前Model,那么在JS中是可以那么获取的
 var ss =' @Model.Scheme'; 
 相当于webfrom中的  
 var ss='<%=xx%>'
HTML code 

<script type="text/javascript"> 
    var ss = '@Model.Scheme; 
    alert(ss); 
</script>

这个是静态的,不是动态的值呀.
不建议这么写可以将MODEL的值赋给hidden通过JS获取
 var ss =' @Model.Scheme'; 
 相当于webfrom中的  
 var ss='<%=xx%>'


如果可以的话, 这个办法好。
不建议这么写可以将MODEL的值赋给hidden通过JS获取

 @Html.RadioButtonListFor(m => m.Scheme, "mallScheme", System.Web.UI.WebControls.RepeatDirection.Horizontal) 
我要获得这个m.Scheme的值,页面是传进来一个model.scheme,不过那个是静态的,我要获得是值表单里面的,是动态的.
是经过表单更改后的model的各个项的值
或者有没有方法,在知道表单id的情况下,获得当前表单里面的各项的值.
HTML code 


<script type="text/javascript"> 
    var ss = '@Model.Scheme; 
    alert(ss); 
</script>


这个本身就是动态的,你在控制器中已经向页面返回了Model,而这个Model中,当然会包含你的那些属性,像 
Scheme,Size等,而这个Model是从数据库里查出来的,当你修改了之后,刷新页面,控制器会根据地址栏的ID查询该ID的记录,然后向页面返回这个Model,都已经得到了,还要赋值给隐藏域?这不是表单提交
引用 2 楼  的回复: 
HTML code 


<script type="text/javascript"> 
var ss = '@Model.Scheme; 
alert(ss); 
</script> 


这个本身就是动态的,你在控制器中已经向页面返回了Model,而这个Model中,当然会包含你的那些属性,像 
Scheme,Size等,而这个Model是从数据库里查出……

用户操作过程:打开页面->填写修改表单->点击预览->保存(提交表单) 
我要在用户 填写修改表单-至(获取表单各项值)-保存 这个过程中获取表单的值.
晕,我就是在表单未提交之前,不与controller交互获取,js中获取表单项的值
注意,我上面写的不是表单提交代码,而是初次访问页面的时候访问当前页面对应ID的Model,并返回在页面上 

就像WebForm中的,修改用户信息一样,进入修改页面,你肯定先根据当前ID查询之前的字段值呀,比如用户名,性别,爱好,然后显示在页面上,提交的时候在根据你修改的进行提交呀,也就是说在修改页面,用户肯定要先看到自己之前的信息,而这些是提交之前的 

而上面的代码正是在提交之前的初始化页面操作 


怎么?换了一个环境就转不过来了? 

真正的提交代码,应该如下呀,传过来修改的模型呀 
 [HttpPost]
        public ActionResult Edit(Bif model)
        {
            BIF bif = db.BIF.Single(b => b.Id == id);
            bif.UserName=model.UserName;
            //.........
            return View(bif);
        }


可以试试通过js遍历表单个元素,然后通过判断是否为radio类型 如果是取出radio的值