zoukankan      html  css  js  c++  java
  • Incident Report

    Gratte.Aurora.Data.Models.Entity.cs
    Gratte.Aurora.Data.Models.DataModelQueries.cs

    <% if (this.Page.User.hasWASPPSpermission("ENTITYPROTECTIONPLAN", "A")) {%>
    this.Page.User.IsInRoles( SecurityGroups.Translators )

    fnLib.userName() 返回 return HttpContext.Current.User.Identity.Name;

    ViewModel:return this.ViewMode == ViewModelMode.Create ? "no_time" : this.Entity.ReportedOn.ToString("t", this.UserFormatCulture);

    Entity的ViewModel中需要验证Address:
    protected override void OnValidation()
    {
    base.OnValidation();

    // Validate...
    this.Entity.Address.Validate();
    // ...and then store the errors in the view.
    this.ValidationErrors.AddRange( this.Entity.Address.GetErrors() );
    }

    <%= this.Html.DropDownList("Entity.MasterRisks", this.Model.MasterRisks, false, null)%>
    <%= this.Html.DropDownList("Entity.LossTypeID", this.Model.Categories, Gratte.Aurora.SHlib.labelText("All_UICaption_NoLossItemType"))%>
    <%= this.Html.Button("Cancel", HtmlButtonType.Normal, Gratte.Aurora.SHlib.labelText("IR_Template_SaveButton_Cancel"), 84, null, new Dictionary<string, object>() { { "onclick", "GoToIndex();" } } )%>
    <%= this.Html.ActionLink(Gratte.Aurora.SHlib.labelText("IR_IncidentTemplate_Details_Edit"), "Edit", new { id = this.Model.Entity.Id }, new { @class = "optionlink" })%>
    <%= this.Html.TextArea( "Entity.Summary", this.Model.Entity.Summary, 4, 85, 3000, false, null ) %>
    <%= this.Html.CheckBox( "Entity.SkuRequired", this.Model.Entity.SkuRequired, false, null )%>
    <%= this.Html.TextBox("Entity.SupportingResourceOther", this.Model.Entity.SupportingResourceOther, 16, 85, false, null)%>
    <%= this.Html.Hidden( "ContentLanguage", this.Model.ContentLanguage ) %>
    <%= this.Ajax.ActionLink( Gratte.Aurora.SHlib.labelText("IR_RepOff_Index_Link_CreateOffender"), "Create", "ReportOffender",
    new RouteValueDictionary() { { "reportId", this.Model.ReportId } },
    new AjaxOptions() { HttpMethod = "GET", UpdateTargetId = "offender-edit-dialog", OnSuccess = "ShowOffenderEditDialog" },
    new Dictionary<string, object>() { { "class", "optionlink" } } ) %>

    <%=new Aurora.WebClient.Controllers.IncidentReporting.TemplateController().GetCheckStr(true)%>

    事务:
    using (TransactionScope transactionScope = new TransactionScope())
    {
    using (SysEntities db = new SysEntities())
    {
    repository.Delete(db, deleteCollection);
    if (deleteCollection.Length == repository.Save(db))
    {
    transactionScope.Complete();
    return true;
    }
    else
    {
    Transaction.Current.Rollback();
    }
    }
    }


    验证提示信息:
    View:
    <%=Html.ValidationSummary("") %>

    Controller:
    ModelState.AddModelError("Error", "您提交的信息还未通过审核!");
    if ((!this.ModelState.IsValid)) return this.RedirectWithErrors(this.View(DeleteViewName, viewModel), viewModel.GetErrors());


    $.ajax({
    type : 'POST',
    url : 'InsertRespond',
    dataType : 'json',
    data : param,
    error :function(msg){
    alertBox('提交失败',msg,'error');
    return false;
    },
    success : function(msg){
    $('#header h2').html('提交成功!');
    $('#main').addClass('hide').next().removeClass('hide');
    setT();
    return false;
    }
    });

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult GetNotification(int id)
    {
    string content = "";
    try
    {
    using (AuroraDataContext db = new AuroraDataContext())
    {
    var template = db.IncidentTemplates.SingleOrDefault(x => x.Id == id);
    if (template != null)
    {
    content = template.Notification;
    }
    }
    }
    catch (Exception ex)
    {
    return Json(new { msg= ex.Message}, JsonRequestBehavior.AllowGet);
    }
    return Json(new { msg = content }, JsonRequestBehavior.AllowGet);
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public JsonResult AjaxValidateReportDate(int id, DateTime reportDate)
    {
    return this.Json(new { IsValid = IncidentReport.ValidateReportDate(reportDate) });
    }


    调用方法: context.GetRepository<IncidentReport>().FindForUser()


    搜索:
    <!-- GRID FILTER -->
    <script language="javascript" type="text/javascript">
    function AuroraPerformFilter() {
    var filter = document.getElementById("FilterParameter");
    if (filter != null && filter.value.length > 0) {
    window.location.href = "/User/Filter?FilterParameter=" + filter.value;
    }
    }
    </script>
    &nbsp;
    <b><% = Gratte.Aurora.SHlib.labelText("User_Index_TableHeader_FilterUsers") %></b>
    &nbsp;
    <% = this.Html.TextBox("FilterParameter", Request.QueryString["value"], new { maxlength = 20 } )%>
    &nbsp;
    <a id="FilterLink" href="#" onclick="AuroraPerformFilter();" class="optionlink"><% = Gratte.Aurora.SHlib.labelText("User_Index_TableHeader_Filter") %></a>
    <a id="ClearLink" href="/User" class="optionlink"><% = Gratte.Aurora.SHlib.labelText("User_Index_TableHeader_Clear") %></a>

    Controller:
    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult Filter(int? page, string FilterParameter)
    {
    using (AuroraDataContext context = new AuroraDataContext())
    {
    int pageSize = Properties.Settings.Default.PageListSize;
    int pageNumber = !page.HasValue ? 0 : page.Value - 1;

    // Retrieve list of users that our logged in user is allowed to see, get a distinct list of those, then join that with UserProfile
    var relatedUserNames = context.udf_GetUserNameAndEntitiesAndGroupsFromUserName(this.fnLib.userName(), 9999, null, true);
    var dNames = (from n in relatedUserNames select new { UserName = n.UserName }).Distinct();
    IEnumerable<UserProfile> users = (from up in context.UserProfiles
    join dn in dNames on up.UserName equals dn.UserName
    where (FilterParameter != null && (up.UserName.Contains(FilterParameter) || up.Name.Contains(FilterParameter)))
    select up);
    return this.View(IndexViewName, new UserListViewModel(users.LoadWith(UserProfile.LoadOptions.All).ToPagedList(pageSize, pageNumber, null)));
    }
    }


    除了用$("form").submit() 还能用 '/user?id=5' 地址栏传参.
    window.location.href = "/Report/Delete/30239";

    //路径为 '控制器/方法名'
    $.post("/ReportAttachment/Create", { "func": "getNameAndTime" },function(data){
    console.log(data.name); // John
    console.log(data.time); // 2pm
    }, "json");


    using (IUnitOfWork context = IocServiceFactory.Resolve<IUnitOfWork>())
    context.GetRepository<IncidentReport>()

    using (AuroraDataContext db = new AuroraDataContext())

    先建SystemSetting.cs页面,再建SystemSettingsViewModel.cs 页面;

    [Bind(Exclude = "Id")]

    public static bool ValidateReportDate(DateTime value)
    {
    return DateTime.Now.Add( TimeSpan.FromDays( 1 ) ).Subtract( value ).Days <= 15;
    }


    dbml文件再次拖入后'表关系'和'生成的属性名称'可能会改变。

    Request["name"] 取的是name的值;

    包含在tab中的内容
    $('#losses-ajax-panel').load('<%= this.Url.Action( "Index", "ReportLoss", new RouteValueDictionary() { { "reportId", this.Model.Entity.Id } } ) %>');

    aspx页面ajax调用:
    <%= this.Ajax.ActionLink( Gratte.Aurora.SHlib.labelText("IR_RepLoss_Index_Link_CreateLoss"), "Create", "ReportLoss",
    new RouteValueDictionary() { { "reportId", this.Model.ReportId } },
    new AjaxOptions() { HttpMethod = "GET", UpdateTargetId = "loss-edit-dialog", OnSuccess = "ShowLossEditDialog" },
    new Dictionary<string, object>() { { "class", "optionlink" } } ) %>

    <a class="datalistoptionlink" title="<%= Gratte.Aurora.SHlib.labelText("IR_Rep_Index_Link_Edit") %>" href="<%= this.Url.Action( "Edit","ReportAttachment", new { id = item.Id } ) %>">
    <img class="datalistoption" alt="Edit" src="<%= this.Url.Content( "~/Content/Images/Edit_16x16.png" ) %>" />
    </a>

    MVC下载文件:
    <a class="optionlink" href="/ReportAttachment/QueryDownLoadAttachment/<%=item.Id %>">DownLoad</a>
    public void QueryDownLoadAttachment(int id)
    {
    using (IUnitOfWork context = IocServiceFactory.Resolve<IUnitOfWork>())
    {
    var info = context.GetRepository<IncidentAttachment>().FindById(id);
    string serverPath = info.AttachmentURL;
    Stream fs = new FileStream(serverPath, FileMode.Open, FileAccess.Read, FileShare.Read);
    FileInfo fi = new FileInfo(serverPath);
    Response.Clear();
    Response.AppendHeader("Content-Disposition", "attachment;filename=" + fi.Name);
    Response.ContentType = ContentType.MimeType(info.AttachmentName);
    Response.WriteFile(serverPath);
    }

    }
    男女:
    this.Genders = new SelectList(new[] { new { Id = "Male", Text = SHlib.labelText("IncidentReport_Offender_Sex_Male") }, new { Id = "Female", Text = SHlib.labelText("IncidentReport_Offender_Sex_Female") } }, "Id", "Text", this.Entity.Sex);


    方法写在*ViewModel.cs文件中;

    Controller:
    if( !viewModel.WeaponSelected )
    model.WeaponId = null;
    ViewModel:
    this.WeaponSelected = entity.WeaponId.HasValue;
    public bool WeaponSelected { get; set; }

    Create方法中有参数:
    public ActionResult Create(int reportId)
    {
    ReportOffenderViewModel viewModel = new ReportOffenderViewModel( ViewModelMode.Create );
    viewModel.Entity.ReportId = reportId;

    public ActionResult Create(int LossTypeID)
    {
    IncidentLossItemSubType obj = new IncidentLossItemSubType();
    obj.LossTypeID = LossTypeID;
    LossItemSubTypeViewModel viewModel = new LossItemSubTypeViewModel(obj,ViewModelMode.Create);

    js验证数字方法:
    function isDigit(s){
    var patrn=/^[0-9]{1,20}$/;
    if(!patrn.exec(s)) return false;
    return true;
    }
    //验证整形和浮点型
    if (isNaN($("#Entity_Compensation").val())) {
    //非数字
    }


    字符串IndexOf 比数组的 Containt 效率高;

    加菜单项在PermissionsAndDashboardSectionsAndItems.sql的3个5.4的地方;

    //取得下拉框选取值的文本
    $('#testSelect option:selected').text();或$("#testSelect").find('option:selected').text();

    用户控件页面:
    public ActionResult SearchRisk(int reportId, int entityId, int? page)
    {
    return this.PartialView(SearchRiskViewName, new ListViewModel<ProtectionRisk>(System.Web.HttpContext.Current, list));
    }


    update UserProfile set [LanguageId]='en-GB' where username ='wasppsadmin'

    fnLib.userLanguage();
    fnLib.userHasPermission( permission, "A" ) == false

    ALTER TABLE incidenttemplate ADD IsShowHealthCheck bit NOT NULL default 1

    linq将字符串返回数组集合:
    IEnumerable<int> templateEntities = Enumerable.Empty<int>();
    if (!string.IsNullOrEmpty(template.Entities))
    {
    templateEntities = from t in template.Entities.Split(',')
    select SharedHelper.TryParseInt32(t) into x
    where x.HasValue
    select x.Value;
    }

    向字表Translation中插入数据
    model.SaveLanguage(fnLib.userLanguage());

    Linq to Sql 查询指定类型的对象
    //var list = db.GetRisksByUsername(fnLib.userName(),fnLib.userLanguage()).Select(c => new RiskInfo { RiskId = c.LinkToMasterRiskIdFromTemplate, Name = c.Name });
    var list = from x in db.GetRisksByUsername(fnLib.userName(), fnLib.userLanguage()) select new RiskInfo() { RiskId = c.LinkToMasterRiskIdFromTemplate, Name = c.Name };

    sqlserver:
    对于有主外键关系的表注意是否要指定Cascade属性。双击Keys下面的某个外键关系,‘INSERT And UPDATE Specifical’选择 'Cascade'

    js中Ajax不能放在循环中;

    DropDownList绑定内容:
    List<SelectListItem> items = new List<SelectListItem>();
    items.Add(new SelectListItem { Text = masterName, Value = MasterRiskId.ToString() });
    return new SelectList(items, "Value", "Text", MasterRiskId);


    //注意Contains方法中字符串的大小写
    students = students.Where(s => s.LastName.ToUpper().Contains(searchString.ToUpper()) || s.FirstMidName.ToUpper().Contains(searchString.ToUpper()));

    $("tr:visible") ,查找所有可见的 tr 元素; $("tr:hidden") ,查找所有不可见的tr元素


    数据处理中,请等待:
    var docheight = $(document).height();
    $("body").append("<div id='greybackground'></div>");
    $("#greybackground").css({ "opacity": "0.5", "height": docheight });
    $("<div id=maskDiv class=\"datagrid-mask\" style=\"display:block\"></div>").appendTo(_196);
    $("<div id= maskmsgDiv class=\"datagrid-mask-msg\" style=\"display:block\">Processing, please wait ...</div>").appendTo(_196);

    System.Threading.Thread.Sleep(500);


    asp:
    <asp:TemplateField Visible="false" HeaderText="BCDT_FileExists" HeaderStyle-CssClass="WFGridViewOptionsCol" >
    <ItemTemplate>
    <asp:Label id="LBFileExists" Visible="false" runat="server" Text='<%# Bind("FileExists") %>' />
    </ItemTemplate>
    </asp:TemplateField>
    string resourceTypeId = ((Label)gr.Cells[9].FindControl("LBResourceTypeId")).Text;

    前台页面尽量尽量少用Ajax;

    aspx页面使用<asp:GridView:
    protected void GVviewMasterChildren_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
    {
    //e.Row.Cells[8].Visible = true;
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
    string lang = DataBinder.Eval(e.Row.DataItem, "Language").ToString();//不用找隐藏控件,直接绑定已有的字段
    HyperLink downloadHL = (HyperLink)e.Row.FindControl("HLdownload");

    移除IE中点击链接时的虚线框:a { outline:0;}

    Linq返回自增长id:
    mfr.SaveLanguage(fnLib.userLanguage());
    int failureReasonId = mfr.Id;

    int controlId = 0;
    if (Int32.TryParse(LBcontrolId.Text, out controlId) && controlId > 0)
    {

    }


    Sql查询语句,在三个字段中查询关键字:
    SELECT a.id,b.name as category,c.name
    FROM dbo.ProtectionControlMitigatorMechanismFailureReason a,ProtectionControlMitigatorMechanismFailureReasonCategoryTranslation b,ProtectionControlMitigatorMechanismFailureReasonTranslation c
    WHERE
    (
    a.ProtectionControlMitigatorMechanismFailureReasonCategoryId=b.id and a.id=c.id
    and b.[language]=@language and c.[language]=@language and
    (
    ((c.name LIKE '%' + @sParam + '%' AND ISNUMERIC(@sParam) = 0) OR LEN(@sParam) = 0)
    OR
    ((b.name LIKE '%' + @sParam + '%' AND ISNUMERIC(@sParam) = 0) OR LEN(@sParam) = 0)
    OR
    (a.id = CASE WHEN ISNUMERIC(@sParam) = 1 THEN CAST(@sParam AS INTEGER) ELSE -1 END OR LEN(@sParam) = 0)
    )
    )
    order by c.name,a.zorder


    using (SqlCommand c = fnLib.getSqlCmd(fnLib.getSQL("UPSERT_ProtectionControlMitigatorToProtectionControlMitigatorMechanismFailureReason")))
    {
    c.Parameters.AddWithValue("@ProtectionControlMitigatorId", mitigatorId);
    c.Parameters.AddWithValue("@ProtectionControlMitigatorMechanismFailureReasonId", Convert.ToInt32(DDFailureReasons.SelectedValue));
    c.Parameters.AddWithValue("@zOrder", TBMitigatorFailureReasonzOrder.Text);
    c.ExecuteNonQuery();
    c.Connection.Close();
    }


    安装EntityFramework4.1.exe,添加引用EntityFramework.dll;

    Membership的表可以建在已知数据库里面,创建一个新的基于Internet模板的MVC项目,拷贝web.config中的Membership等节点,使用ASP.NET Configuration页面配置,拷贝account页面等;

    waspps.mdf附加报错“拒绝访问”,解决方法:右键 属性-安全-添加Users组,勾选完全控制

    int? count;
    return count ?? 0;

    if(string.Equals(values["Product"],PromoCode,StringComparison.OrdinalIgnoreCase)==false) //比较连个字符串,不区分大小写

    public string GetCartId(HttpContextBase context)
    {
    if (context.Session[CartSessionKey] == null)
    {
    //如果用户已经登陆,那么用户名就是购物车的标识
    if (!string.IsNullOrWhiteSpace(context.User.Identity.Name))
    {
    context.Session[CartSessionKey] = context.User.Identity.Name;
    }
    else
    {
    // Generate a new random GUID using System.Guid class

    Guid tempCartId = Guid.NewGuid();
    // Send tempCartId back to client as a cookie
    context.Session[CartSessionKey] = tempCartId.ToString();
    }
    }
    return context.Session[CartSessionKey].ToString();
    }

    VS2008左上点击断开连接,然后还原数据库。

    @Model int

    System.Security.Principal.IPrincipal user=this.HttpContext.User;
    if(System.Security.Principal.IPrincipal.Identity.IsAuthenticated)

  • 相关阅读:
    区块链在零售业和银行业的广泛应用
    云存储平台产品浅析
    LINUX操作系统知识:进程与线程详解
    hibernate实现分页
    Hibernate 映射文件的配置 核心文件的配置 一对一 一对多 多对多 hibernate检索策略 Hibernate中session的关闭问题总结
    留言系统项目总结
    jquery 进行dom操作
    数据库 的outfile 备份与还原 视图 事物 触发器 mysql函数和自定义函数
    数据库的子查询、连接查询
    三 级城市,部门,员工,列表联动的问题解决,获取列表的被选中option对象问题
  • 原文地址:https://www.cnblogs.com/cw_volcano/p/2345625.html
Copyright © 2011-2022 走看看