zoukankan      html  css  js  c++  java
  • MVCHelper 请求检验

        public class MVCHelper
        {
            //有 两 个ModelStateDictionary类,别弄混乱了要使用 System.Web.Mvc 下的
            //如果添加引用中找不到System.Web.MVC,那么可以用nuget安装:
            //Install-Package Microsoft.AspNet.Mvc
            public static string GetValidMsg(System.Web.Mvc.ModelStateDictionary modelState)
            {
                StringBuilder sb = new StringBuilder();
                foreach (var key in modelState.Keys)
                {
                    if (modelState[key].Errors.Count <= 0)
                        continue;
    
                    sb.AppendFormat(" 属性【{0}】错误:", key);
                    foreach (var modelError in modelState[key].Errors)
                    {
                        sb.AppendLine(modelError.ErrorMessage);
                    }
                }
                return sb.ToString();
            }
            
            public static string RemoveQueryString(NameValueCollection nvc, string name)
            {
                NameValueCollection newNvc = new NameValueCollection(nvc);
                newNvc.Remove(name);
                return ToQueryString(newNvc);
            }
    
            public static string UpdateQueryString(NameValueCollection nvc, string name, string value)
            {
                NameValueCollection newNvc = new NameValueCollection(nvc);
                if (newNvc.AllKeys.Contains(name))
                    newNvc[name] = value;
                else
                    newNvc.Add(name, value);
    
                return ToQueryString(newNvc);
            }
    
            private static string ToQueryString(NameValueCollection newNvc)
            {
                StringBuilder sb = new StringBuilder();
                foreach (var key in newNvc.AllKeys)
                {
                    string value = newNvc[key];
                    //EscapeDataString就是对特殊字符进行uri编码
                    sb.AppendFormat("{0}={1}&", key, Uri.EscapeDataString(value));
                }
                return sb.ToString().Trim('&');//去掉最后一个多余的&
            }
    
            //生成XXX的静态html页面的 方法
            public static string RenderViewToString(ControllerContext context, string viewPath, object model = null)
            {
                ViewEngineResult viewEngineResult = ViewEngines.Engines.FindView(context, viewPath, null);
                if (viewEngineResult == null)
                    throw new FileNotFoundException("View" + viewPath + "cannot be found.");
    
                var view = viewEngineResult.View;
                context.Controller.ViewData.Model = model;
                using (var sw = new StringWriter())
                {
                    var ctx = new ViewContext(context, view, context.Controller.ViewData, context.Controller.TempData, sw);
                    view.Render(ctx, sw);
                    return sw.ToString();
                }
            }
        }
  • 相关阅读:
    C++设计模式-Bridge桥接模式
    解决VS2010打开Web页面时经常由于内存较低而导致VS2010自动关闭的问题
    Js继承小结
    MAC上的包管理利器
    Objective-C的hook方案(一): Method Swizzling
    OleContainer操作Excel以二进制方式读写数据库
    复制文件时,如何显示进度条(使用TFileStream一点一点读,或者使用BlockRead,并插入application.ProcessMessages)
    ADO异步查询显示进度条
    D2010 RTTI + Attribute 简单实现ORM
    Delphi默认窗体随想
  • 原文地址:https://www.cnblogs.com/kikyoqiang/p/10825726.html
Copyright © 2011-2022 走看看