Session中存储的用户基本信息,查看比较他有没有登录和能否访问当前页面。
Session的原理,也就是在服务器端生成一个SessionID对应了存储的用户数据,而SessionID存储在Cookie中,客户端以后每次请求都会带上这个
Cookie,服务器端根据Cookie中的SessionID找到存储在服务器端的对应当前用户的数据。
示例用http://blog.csdn.net/u010096526/article/details/46700581
FormsAuthentication是微软提供给我们开发人员使用,做身份认证使用的。通过该认证,我们可以把用户Name 和部分用户数据存储在Cookie中,
通过基本的条件设置可以,很简单的实现基本的身份角色认证。
forms身份认证
http://www.cnblogs.com/fish-li/archive/2012/04/15/2450571.html 本帖最后由 李维强-15级 于 2018-3-28 01:05 编辑
htmlhelper 总结
http://www.cnblogs.com/hunji-fight/p/3821140.html
http://www.cnblogs.com/fishtreeyu/archive/2011/03/23/1992498.html
另外 如果需要输出带标签的HTML相关东西,如字符串,需要使用@Html.Raw()这样才行。 当多个action需要调用并且传递参数时:
public ActionResult getAllMenu(int i) {
ManagerMenu managerMenu = new ManagerMenu();
string str_json = string.Empty;
List<ManagerMenu> listManagerMenu = GetMenu.getMenu(i);//得到菜单的list集合
if (listManagerMenu.Count > 0)
{
List<TreeNode> listTreeNode = managerMenu.rerurnTreeNode(listManagerMenu); //把菜单的list集合转化为换成符合easyUI的带有递归关系的集合
str_json = ObjToJson.objToJson(listTreeNode); //把对象转换为json格式的字符串
}
return Content(str_json);
}
public ActionResult getPersonMenu() {
return RedirectToAction("getAllMenu", new { i=1});
} 本帖最后由 李维强-15级 于 2019-6-23 13:36 编辑
可以参考https://www.cnblogs.com/genesis/p/5220879.html
实现控制器里面有子目录,view里面也有子目录。如下图所示
控制器代码
--------------------------------------------------------
正常情况下,如果单独建立这种目录然后直接去访问的话,肯定有问题,那么需要按照如下方式设置
首先需要重新配置路由,
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//路由规则匹配是从上到下的,优先匹配的路由一定要写在最上面。因为路由匹配成功以后,他不会继续匹配下去。
routes.MapRoute(
name: "LayUI",
url: "LayUI/{controller}/{action}/{id}",
defaults: new { Controller = "Admin", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "WxPage", action = "Index", id = UrlParameter.Optional }
);
}
}
然后配置了路由过后,发现也不能访问,
因为,默认视图也是有自己的调用路径的,如下:
Views/{1}/{0}.cshtml
Views/Shared/{0}.cshtml
其中{1}表示Controller的名称,{0}表示视图名称,Shared是存放模板页的文件夹。一看就很清楚了。这个就是寻找视图的规则,所以我们存放在"Views/LayUI/Admin/Index.cshtml的存放规则就不满足。
那么下面就需要修改这个默认的view路径,也就是重写它,并且保留原来的那些东西
那么我建立一个自己的类,继承RazorViewEngine方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace WuYuHotel.Tools
{
public sealed class LayUIViewEngine:RazorViewEngine
{
publicLayUIViewEngine()
{
ViewLocationFormats = new[]
{
"~/Views/{1}/{0}.cshtml",
"~/Views/Shared/{0}.cshtml",
//以上两个是默认视图引擎路径
"~/Views/LayUI/{1}/{0}.cshtml"//我们的规则
};
}
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
{
return base.FindView(controllerContext, viewName, masterName, useCache);
}
}
}
然后需要再global里面去注册一下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using WuYuHotel.WX_AccToken;
using System.Threading;
using WuYuHotel.Tools;
namespace WuYuHotel
{
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
RegisterView();
}
protected void RegisterView()
{
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new LayUIViewEngine());
}
}
}
然后就可以访问到了~~~
使用区域
http://blog.csdn.net/hanjun0612/article/details/61918960
--------------------------------------
在14楼提到的东西,实际上有问题,例如添加了那个layui的目录,但是不要那个目录,任然可以访问到例如,localhost:60748//admin/index,也可以,还有一个localhost:60748//layui/home/index也可以访问到,这个实际上就存在问题因为他都匹配到了那条路由。。。如果硬要采取14楼的方法,那么就需要添加路由限制,在我帖子http://bbs.csdn.net/topics/392327883里面2楼的地方写得很清楚了。。
不过最后王道的方法还是使用Areas,因为把控制器文件放在主目录的controllers下面,始终都会被匹配到。。所以还是用这个不错。。 控制器上的自定义过滤
https://blog.csdn.net/dxb601/article/details/78021716
里面涉及到个调用base.OnActionExecuting(filterContext)
一句话,就是调用base.OnActionExecuting(filterContext)这个后,才会执行后续的ActionFilter,如果你确定只有一个,或是不想执行后续的话,那么可以不用调用该语句。
并且,filterContext.Result = xxx;会导致转向其它视图,后续的ActionFilter也是执行不了的。
MVC 后台接收数组对象
前台:
$("#BatchDel").on("click", function () {
var checkStatus = table.checkStatus('EquipFeeMainlyTable');
var data = checkStatus.data;
if (data.length < 1) {
layer.msg('至少选择一行数据', { icon: 3, time: 1500 });
return;
}
var arr = new Array();
for (var i = 0; i < data.length; i++) {
arr = data.PEEquipPriceId;
}
$.ajax({
type: "POST",
url: "/Estimate/PEEquipFeeBatchDel",
//contentType: "application/json",
//dataType: "json",
async: false,
data: { "PEEquipPriceId": arr },
success: function (msg) {
if (msg.result == "OK") {
layer.msg('复制成功"', { icon: 6, time: 1000 });
table.reload("demo", {
//where: { SortName: "SSlistId", Order: "Desc", Condition: " and 1=1" }
});
layer.close(layerCopyIndex);
} else {
alert(msg.result);
}
}
});
});
后台
Request.Form.GetValues("PEEquipPriceId[]")
页:
1
[2]