zoukankan      html  css  js  c++  java
  • EF+MVC+Bootstrap 项目实践 Day6

    不管怎样昨天已经调的能登进系统了,各种遗留暂时不管了。今天打算做下新建用户和首页基本布局

    看了下源码,没有判断注册用户的,跳转到的index.html也是没有的,看来要自已写。

                if(password != rePassword){
                    ModelState.AddModelError("error", "两次密码不一致");
                    return RedirectToAction("Login");
                    //return View("Login");
                }

    1、两种跳转形式有所不同

    return RedirectToAction是真正的跳转,但错误提示就没有了,不知怎么带过去,找资料中

    return View("Login")不会刷新跳转(像是ajax那样,还保留在页面),可以显示错误提示,但地址栏就变成Auth/Register(因为form和方法命名成Register),此时还是在原注册表单上,再想登陆就不行了,提交的都是注册的操作

    ===========================

    在网上找到一篇比机翻还不如的资料,好歹代码是英文的看懂了,比较好的解决了这问题

        if(password != rePassword){
                    ModelState.AddModelError("error", "两次密码不一致");
                    TempData["CheckResult"] = ViewData;
                    return RedirectToAction("Login");
                }
        [AuthorizeIgnore]
            public ActionResult Login()
            {
                if(TempData["CheckResult"] != null) ViewData = (ViewDataDictionary) TempData["CheckResult"];
                return View();
            }

    利用TempData把ModelState.AddModelError之类的存起来,在View中取出来,现在既实现了跳转,也有相应提示文字了

    2、带Label的Checkbox

    @Html.CheckBox("Agreement", false)
    @Html.Label("Agreement", "我同意此协议")

    如果设定了CheckBox的class="checkbox",bootstrap默认的checkbox样式是display:block,所以要注意一下

    就这两行,也折腾了挺久。原先好好的html,要用Razor表达出来,就像要从头学起一样。

    另外查资料时还发现一个坑:

    如果checkbox被选中,则服务器收到的true,false。
    
    checkbox未选中,因为有hidden的input存在所以服务器则收到flase。
    
    那么,我们用如下代码即可获得checkbox的选中状态
    
    Request.forms[Key].Contains("true"); 

    3、后台获取表单资料

        
      //1、直接使用Request
      public ActionResult HandleForm() { ViewData["name"] = Request["name"]; ViewData["favColor"] = Request["favColor"]; ViewData["bookType"] = Request["bookType"]; ViewData["pet"] = Request["pets"]; return View("FormResults"); }
      //2、使用name一一对应的参数
    public ActionResult HandleForm(string name, string favColor, Boolean bookType, string pets) { ViewData["name"] = name; ViewData["favColor"] = favColor; ViewData["bookType"] = bookType; ViewData["pet"] = pets; return View("FormResults"); }
      3、使用FormCollection
    public ActionResult HandleForm(FormCollection form) { ViewData["name"] = form["name"]; ViewData["favColor"] = form["favColor"]; ViewData["bookType"] = form["bookType"]; ViewData["pet"] = form["pets"]; return View("FormResults"); }
      4、使用实体作为Action参数传入,前提是提交的表单元素名称与实体属性名称一一对应 [HttpPost]
    public ActionResult HandleForm(InforModel infor) { ViewData["name"] = infor.name; ViewData["favColor"] = infor.favColor; ViewData["bookType"] = infor.bookType; ViewData["pet"] = infor.pets; return View("FormResults"); }

     

    资料取自友军,好像最近博客园管的挺严?不能出现其它网址?所以避避嫌只截图吧

    另外,未经允许不得转载也挺坑的,转部份代码算不算转载?这种三年前的贴子,要再联系博主征得许可,黄花菜都凉了,而且有些博主写到一半都废弃了。

    不管怎样,还是把上面那段代码转过来吧,写的不错,解决了我的困惑,也希望能帮忙到其它新手。

    ===============

    试了一下,基本注册可以了,要注意密码保存是加密。另外,最好有个提示注册成功,几秒后再进入首页,暂时就先不搞了,明天来做首页

  • 相关阅读:
    P4281 [AHOI2008]紧急集合 / 聚会
    P2622 关灯问题II
    CF1092F Tree with Maximum Cost
    10.28记
    威尔逊定理及证明
    CF895C Square Subsets
    洛谷 P5556 圣剑护符
    Multi-nim结论及证明
    AT2667 [AGC017D] Game on Tree
    洛谷 P4643 [国家集训队]阿狸和桃子的游戏
  • 原文地址:https://www.cnblogs.com/liuyouying/p/5046562.html
Copyright © 2011-2022 走看看