mvc 总结

            @Html.DropDownList("sex", new SelectList(Enum.GetValues(typeof(enumSex))), new { @class = "form-control",data_bind="value: Sex"})

1、mvc htmlhelper 中加入data-属性,应改为data_

This problem has been addressed in ASP.Net MVC 3. They now automatically convert underscores in html attribute properties to dashes. They got lucky on this one, as underscores are not legal in html attributes, so MVC can confidently imply that you‘d like a dash when you use an underscore.

For example:

@Html.TextBoxFor(vm => vm.City, new { data_bind = "foo" })

  

will render this in MVC 3:

<input data-bind="foo" id="City" name="City" type="text" value="" />

  

If you‘re still using an older version of MVC, you can mimic what MVC 3 is doing by creating this static method that I borrowed from MVC3‘s source code:

public class Foo {
    public static RouteValueDictionary AnonymousObjectToHtmlAttributes(object htmlAttributes) {
        RouteValueDictionary result = new RouteValueDictionary();
        if (htmlAttributes != null) {
            foreach (System.ComponentModel.PropertyDescriptor property in System.ComponentModel.TypeDescriptor.GetProperties(htmlAttributes)) {
                result.Add(property.Name.Replace(‘_‘, ‘-‘), property.GetValue(htmlAttributes));
            }
        }
        return result;
    }
}

And then you can use it like this:

<%: Html.TextBoxFor(vm => vm.City, Foo.AnonymousObjectToHtmlAttributes(new { data_bind = "foo" })) %>

  

and this will render the correct data-* attribute:

<input data-bind="foo" id="City" name="City" type="text" value="" />

2、枚举绑定

            @Html.DropDownList("sex", new SelectList(Enum.GetValues(typeof(enumSex))), new { @class = "form-control",data_bind="value: Sex"})
                @Html.DropDownListFor(model => model.DepartmentType, new SelectList(Enum.GetValues(typeof(enumDepartmentType))))

但是上两种方法只有text,没有value,所以有个优化方案如下

knockout select绑定,选中默认值

假设我们有一个enum:

public enum Role{
User = 0,
Admin = 1024
}

因为enum本身并没有IEnumerable接口,所以不能直接使用new SelectList(Role);来将之填充DropDownList。

但是我们可以写一个静态方法将之转为IEnumerable。

public class EnumExt{
    static public List<ListItem> ToListItem<T>(){
        List<ListItem> li = new List<ListItem>();
        foreach (int s in Enum.GetValues(typeof(T))){
            li.Add(new ListItem{
                Value = s.ToString(),
                Text = Enum.GetName(typeof (T), s)
            }
            );
        }
        return li;
    }
}

View文件中我们加入以下helper:

  <%=Html.DropDownList("enumlist") %>

然后我们在Controller的action中写如下绑定即可

  public ActionResult Index()

{

ViewData["enumlist"] = new SelectList(EnumExt.ToListItem<Role>(),"value","text");

return View();

}
这样我们就可以实现将Enum绑定在DropDownList了前提还要有一个ListItem类
  public class ListItem
    {
        public string Value { get; set; }
        public string Text { get; set; }
    }
时间: 2024-08-03 15:29:55

mvc 总结的相关文章

爱上MVC~业务层刻意抛出异常,全局异常的捕获它并按格式返回

对于业务层的程序的致命错误,我们一直的做法就是直接抛出指定的异常,让程序去终断,这种做法是对的,因为如果一个业务出现了致命的阻塞的问题,就没有必要再向上一层一层的返回了,但这时有个问题,直接抛异常,意味着服务器直接500了,前端如何去显示,或者如果你是API的服务,如果为前端返回,如果是500,那直接就挂了,哈哈! 下面是在MVC环境下优化的全局异常捕获代码(非API) /// <summary> /// 全局异常捕获 /// </summary> public class Glo

ASP.NET MVC 使用Remote特性实现远程属性验证

RemoteAttribute是asp.net mvc 的一个验证特性,它位于System.Web.Mvc命名空间 下面通过例子来说明 很多系统中都有会员这个功能,会员在前台注册时,用户名不能与现有的用户名重复,还要求输入手机号码去注册,同时手机号码也需要验证是否重复,下面是实体类 /// <summary> /// 会员 /// </summary> public class Member { public int Id { get; set; } [Required(Error

Asp.Net MVC及Web API框架配置会碰到的几个问题及解决方案 (精髓)

前言 刚开始创建MVC与Web API的混合项目时,碰到好多问题,今天拿出来跟大家一起分享下.有朋友私信我问项目的分层及文件夹结构在我的第一篇博客中没说清楚,那么接下来我就准备从这些文件怎么分文件夹说起.问题大概有以下几点: 1.项目层的文件夹结构 2.解决MVC的Controller和Web API的Controller类名不能相同的问题 3.给MVC不同命名空间的Area的注册不同的路由 4.让Web API路由配置也支持命名空间参数 5.MVC及Web API添加身份验证及错误处理的过滤器

Swagger+ springfox +Spring mvc

简介 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步.Swagger 让部署管理和使用功能强大的API从未如此简单.这一次我将从零开始搭建一个工程来演示如何在Spring mvc中整合Swagger生成Restful接口文档. 新建工程 我们新建一个Maven工程,并添加Web Facet,工程结构如下图所

MVC下微信企业号网页应用开发调用JSSDK接口不成功问题

在MVC下进行企业微信里的网页应用开发,前台页面中为了调用图像接口,使用了JSSDK.按照官方文档进行了正确配置. 现象:WEB开发工具调试一切正常,但从手机企业微信应用进入页面后接口调用无效(这个页面是从一级页面链接过来的),开了调试模式后,显示config:ok.说明配置无误.经过反复检查,终于发现问题所在. 原因:在一级页面(http://xx.xxx.xxx/main/index)中的链接是使用htmlhelper来写的,即@Html.ActionLink("测试接口",&qu

ASP.NET MVC与CSRF(跨站脚本)攻击

CSRF 一 何为CSRF CSRF(Cross-site request forgery跨站请求伪造,也被称成为"one click attack"或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用.需要注意的是,CSRF与XSS的区别,CSRF是其他网站进行对你的网站的攻击. 关于CSRF的详细信息请看:https://baike.baidu.com/item/CSRF/2735433 二 CSRF的危害 对CSRF进行简单了解后,我们先来看看

95后实习生的远程办公体验(asp.net mvc\C#技术栈)

这个月我们做了一件别人看起来很疯狂的事情,就是让一批95后的实习生实行远程办公,效果还不错,于是写此文总结一下. 其实认真算算,我自己的远程工作经验有十年了吧,在北京工作的时候天气不好就申请在家办公,在硅谷的时候每周有三天在家办公,两天去办公室办公.所以我也算得上是远程办公的老司机了吧. 不过,我之前都是对有多年工作经验的老司机才实行远程办公,还从来没有对还未毕业的实习生实行过.老实说,不敢啊,也不放心,况且我在cnblogs博客园呆了十年,还真没见过对还未毕业的实习生实行过远程办公的. 那为什

视图框架:Spring MVC 4.0(1)

目录 一.表单标签库 1.1.简介 1.2.常用属性 1.3.form标签与input标签 1.4.checkbox标签 1.5.radiobutton标签 1.6.password标签 1.7.select标签 1.8.option标签 1.9.options标签 1.10.textarea.errors标签 1.11.hidden标签 1.12.radiobuttons 单选列表与checkboxs复选列表 二.视图解析器 2.1.ViewResolver视图解析器 2.2.链式视图解析器

Spring MVC HTTP请求数据绑定

package com.springmvc.controller; import com.springmvc.model.UserInfo; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.stereotype.Controller; import org.springframework.uti

MVC概述

学习MVC模式   一.MVC简介 MVC是Model-View-Controller的简称,即模型-视图-控制器.MVC是一种设计模式,它把应用程序分成三个核心模块:模型.视图.控制器,它们各自处理自己的任务. 1.模型(Model) a.模型是应用程序的主体部分,模型表示业务数据和业务逻辑. b.一个模型能为多个视图提供数据. c.由于应用于模型的代码只需写一次就可以被多个视图重用,所以提高了代码的可重用性. 2.视图(View): 简单来说就是在页面上填写java代码实现显示. 详细来说视