zoukankan      html  css  js  c++  java
  • ASP.NET MVC 3 常用

    http://blog.csdn.net/churujianghu/article/details/7297358

    1、ASP.NET MVC 3 如何去除默认验证

         这个默认验证是在web.config配置文件中设置的
        <add key="ClientValidationEnabled" value="true"/>设置为false就行了,
        这个是去掉所有model的默认验证,然后你可以在model中加上自己的验证,这样哪些属性需要验证,哪些不需要 就看你自己了

    示例代码:

    View Code
    publicclass Movie
    {
    publicint ID { get; set; }

    [Required(ErrorMessage="必须输入标题")]
    publicstring Title { get; set; }

    [Required(ErrorMessage="必须输入发行日期")]
    public DateTime ReleaseDate { get; set; }

    [Required(ErrorMessage="必须制定种类")]
    publicstring Genre { get; set; }

    [Required(ErrorMessage="必须输入票价")]
    [Range(1,100,ErrorMessage="票价必须在 1 到 100 元之间")]
    publicdecimal Price { get; set; }

    [StringLength(5,ErrorMessage="最多允许输入5个字符")]
    publicstring Rating { get; set; }
    publicstring Description { get; set; }
    }

    2、ASP.NET MVC 3 在视图中如何创建HTML标签,(在视图中把含有标签的字符编译成相应的标签)

         在asp.net mvc 3 中的视图中字符串输出是默认按原字符串输出的,如果需要把字符串中的标签字符编译成相应的标签

         则需要在输出的时候创建标签:@MvcHtmlString.Create(ViewBag.RegionHTML); ViewBag.RegionHTML是包含标签的字符串

    3、ASP.NET MVC 3 中 报错:mvc 3 属性不能设置为“null”值。必须将该属性设置为类型为“Int32”的非 null 值。

         这是因为数据库中的表中的字段中有null值(如:int,double,datetime 等)

         这里只需要把数据库中相应数字类型的的字段的值中的null改掉就行了,比如把数字类型NULL值改成0,字符类型NULL值改成空格,日期类型NULL值改成日期

    4、数据库表需要加s

        ASP.NET MVC 3 中有个奇怪的现象,在使用EFCodeFirst后很多时候,数据库中的表需要加S,比如原来数据库表Product

       现在要变成Products,不然很多时候会报错:对象名 'dbo.Products' 无效

    5、ASP.NET MVC 3 中如何使用单选按钮 RadioButton

         这个比较简单,两种方式都行 @Html.RadioButton 或 @Html.RadioButtonFor    

         1、  @Html.RadioButton("Sex",true)男       2、 @Html.RadioButtonFor(model=>model.Sex,true)男
                @Html.RadioButton("Sex",false)女            @Html.RadioButtonFor(model=>model.Sex,false)女

         这里的sex就是实体属性,数据类型是bool类型,它会自动匹配数据库的值,相同的选中

    6、ASP.NET MVC 3 中如何引用js文件

         <script src="@Url.Content("~/Scripts/Calendar4.js")" type="text/javascript"></script>

         这里的Calendar4.js文件直接放在网站自动生成的Scripts文件夹中

    7、ASP.NET MVC 3 文本框自定义单击事件 onclick事件

        有两种方式

              1、直接写html标签,和平时一样<input type="text" id="Birthday" name="Birthday" onclick="MyCalendar.SetDate(this)" value="@Model.Birthday" />

           2、这样写:@Html.TextBox("Birthday", Model.Birthday, new { onclick = "MyCalendar.SetDate(this)",style="500px;" })

        数据交互上1和2没什么大的区别,但是如果你写了验证,1是不会引用错误样式,2会自动关联错误样式。

    8、ASP.NET MVC 3 使用下拉列表 DropDownList

       首先在控制器中需要得到一个SelectList控件放到上下文中(ViewData)

      控制器代码如下:           

    View Code
    private CRMDBContext db = new CRMDBContext();
    var list = db.Partments.ToList();
    ViewData["partmentDDL"] = new SelectList(list, "Id", "PartName",employee.PartmentID);

      视图中:   

    1、 @Html.DropDownList("PartmentID", (SelectList)ViewData["partmentDDL"], "--this one--")
      
    2、 @Html.DropDownListFor(model => model.PartmentID, (SelectList)ViewData["partmentDDL"], "--this one--")

          这里的PartmentID是实体属性,如果ViewData中的SelectList中存在PartmentID值则自动选中该值。"--this one--"在下拉列表中添加一个选项,如果不需要添加,则填null

    9、ASP.NET MVC 3 具有键“XXX”的 ViewData 项属于类型“System.Int32”,但它必须属于类型“IEnumerable<SelectListItem>”。

      网上有人说是:错误主要原因是在提交处不认识原来的下拉列表(来自这里)他的解决方法是:在控制器中的接受处理的Action中重复构建DropDownList的代码,比如

    View Code
    public ActionResult Create()
            {
                var actionList = db.Actions.ToList();
                ViewData["actionDDL"] = new SelectList(actionList, "Id", "GetMoActName");
                var popedomList = db.Popedoms.ToList();
                ViewData["pepedomDDL"] = new SelectList(popedomList, "Id", "Property");
                return View();
            }
    
            //
            // POST: /ActionPopedoms/Create
    
            [HttpPost]
            public ActionResult Create(ActionPopedoms actionpopedoms)
            {
                var actionList = db.Actions.ToList();
                ViewData["actionDDL"] = new SelectList(actionList, "Id", "GetMoActName");
                var popedomList = db.Popedoms.ToList();
                ViewData["pepedomDDL"] = new SelectList(popedomList, "Id", "Property");
    
                if (ModelState.IsValid)
                {
                    db.ActinPopedoms.Add(actionpopedoms);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
                return View(actionpopedoms);
            }

     大家注意这两个方法,第一个action方法是展示新增页面用的,也就是说你再其他地方点击新增功能时,通过这个方法在转到视图,这个视图就是新增页面,在这里方法里构建了两个下拉列表,当我们点击相应按钮确定新增后,请求就被第二个action方法,这个方法传进来的是一个实体对象(这里为什么是一个实体对象就不具体说明),在这里方法里面就是执行相关新增的功能的,在这里新增成功后会转到action方法index方法中,如果新增失败则转到当前页面(这里代码 return view(actionpopedoms)就是新增的页面),问题就出在这里,如果第二个方法没有重新构建下拉列表的代码,则这里返回当前页面后,页面就不认识第一个action方法中构建的下拉列表,所以页面最终报错是 具有键“XXX”的 ViewData 项属于类型“System.Int32”,但它必须属于类型“IEnumerable<SelectListItem>”。所以只需要确定第二个action方法里的操作不会报错就行了。如果你需要看错误信息,你可以try一下,并return view(错误信息)

    10、ASP.NET MVC 3 在Razor view页面中如何导入命名空间呢

    @using MyNamespace

    11、ASP.NET MVC 3 中如何获得请求的Url路径 

    string url = "";//url全部分
    url = HttpContext.Current.Request.Url.ToString();

    12、ASP.NET MVC 3 中 tempdata、viewdata、viewbag三者区别

         TempData ViewData ViewBag都可以用来保存数据,它们之间的区别如下: TempData保存在Session中,Controller每次执行请求的时候,会从Session中先获取TempData,而后清除Session,获取完TempData数据,虽然保存在内部字典对象中,但是其集合中的每个条目访问一次后就从字典表中删除。具体代码层面,TempData获取过程是通过SessionStateTempDataProvider.LoadTempData方法从ControllerContext的Session中读取数据,而后清除Session,故TempData只能跨Controller传递一次。ViewData生命 周期和View相同,仅对当前View有效。 ViewBag和ViewData生命周期相同,也是对但前View有效,不同的是ViewBag的类型不再是字典的键值对结构,而是dynamic动态类型,属MVC3里面新增的部分。-------来自

    13、ASP.NET MVC 3 中使用单选按钮Radiobutton

      这里为了应急所需,暂只介绍一种用法代码如下

      <div class="editor-field">
                @Html.RadioButton("Sex", Model.Sex, Model.Sex)
                男
                @Html.RadioButton("Sex", !Model.Sex, !Model.Sex)
                女
                @Html.ValidationMessageFor(model => model.Sex)
            </div>

     
  • 相关阅读:
    129. Sum Root to Leaf Numbers
    113. Path Sum II
    114. Flatten Binary Tree to Linked List
    112. Path Sum
    100. Same Tree
    300. Longest Increasing Subsequence
    72. Edit Distance
    自定义js标签库
    JS 实现Table相同行的单元格自动合并示例代码
    mysql 高版本only_full_group_by 错误
  • 原文地址:https://www.cnblogs.com/zkwarrior/p/5138904.html
Copyright © 2011-2022 走看看