不管怎样昨天已经调的能登进系统了,各种遗留暂时不管了。今天打算做下新建用户和首页基本布局
看了下源码,没有判断注册用户的,跳转到的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"); }
资料取自友军,好像最近博客园管的挺严?不能出现其它网址?所以避避嫌只截图吧
另外,未经允许不得转载也挺坑的,转部份代码算不算转载?这种三年前的贴子,要再联系博主征得许可,黄花菜都凉了,而且有些博主写到一半都废弃了。
不管怎样,还是把上面那段代码转过来吧,写的不错,解决了我的困惑,也希望能帮忙到其它新手。
===============
试了一下,基本注册可以了,要注意密码保存是加密。另外,最好有个提示注册成功,几秒后再进入首页,暂时就先不搞了,明天来做首页