在Asp.Net Core MVC 开发过程中遇到的问题
1. Q: Razor视图中怎么添加全局模型验证消息
A:使用ModelOnly
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
2.Q:树形表格,使用的是bootstrap-table+jquery.treegrid
A:
效果
参考的代码,某些地方添加了注释
<link href="https://cdnjs.cloudflare.com/ajax/libs/jquery-treegrid/0.2.0/css/jquery.treegrid.min.css" rel="stylesheet">
<link href="https://unpkg.com/bootstrap-table@1.15.5/dist/bootstrap-table.min.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-treegrid/0.2.0/js/jquery.treegrid.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.15.5/dist/bootstrap-table.min.js"></script>
<script src="https://unpkg.com/bootstrap-table@1.15.5/dist/extensions/treegrid/bootstrap-table-treegrid.min.js"></script>
<table id="table"></table>
<script>
var $table = $('#table')
$(function() {
$table.bootstrapTable({
url: 'json/treegrid.json',
striped: true,
sidePagination: 'server',
idField: 'id',
showColumns: true,
columns: [
{
field: 'ck',
checkbox: true
},
{
field: 'name',
title: '名称'
},
{
field: 'status',
title: '状态',
sortable: true,
align: 'center',
formatter: 'statusFormatter'
},
{
field: 'permissionValue',
title: '权限值'
}
],
treeShowField: 'name',//注意
parentIdField: 'pid',//注意
onPostBody: function() {
var columns = $table.bootstrapTable('getOptions').columns
if (columns && columns[0][1].visible) {
$table.treegrid({
treeColumn: 1,
onChange: function() {
$table.bootstrapTable('resetWidth')
}
})
}
}
})
})
function statusFormatter(value, row, index) {
if (value === 1) {
return '<span class="label label-success">正常</span>'
}
return '<span class="label label-default">锁定</span>'
}
</script>
给复选框添加选择的点击功能,在一个表格中选中一行时,加载与此行有关的数据信息。其他的相关js的引用请自行添加
$RoleTable.on('check.bs.table uncheck.bs.table ' +
'check-all.bs.table uncheck-all.bs.table',
function () {
$('#RoleToNavi').prop('disabled', !$RoleTable.bootstrapTable('getSelections').length);
$.map($RoleTable.bootstrapTable('getSelections'),
function (row) {
roleId = row.Id;
$RoleNavigationTable.bootstrapTable('destroy');//销毁
$RoleNavigationTable.bootstrapTable({//重新加载
});
});
});
3.Q:Razor中定义函数~~~~
A:使用@function
4.Q:EFCore中怎么设定decimal的精度,如果不设置精度的话,默认生成数据库(MariaDB)中默认精度是(65,30)
A:设置固定精度问题,示例代码如下
public class MyProjectContext : DbContext
{
public DbSet<order> Orders { get; set; }
rotected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<order>(b =>
{
//配置订单的金额浮点数精度为decimal(18,6)
b.Property(p => p.Amount).HasColumnType("decimal(18,6)");
});
}
}
5.Q:WPF问题:mvvm模式下,怎么让点击按钮关闭窗口
A: 使用带参数的Command进行实现,具体代码如下:
//command定义
public ICommand CancelCommand { get; set; }
// CancelCommand实现
CancelCommand = new RelayCommand<window>((window)=>
{
window.Close();
});
xaml:代码
<window x:class="MvvmCloseWindowApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:MvvmCloseWindowApp" mc:ignorable="d" name="MWindow" title="MainWindow" height="350" width="525">
<grid>
<button content="Close Window" width="100" height="25" command="{Binding CancelCommand}" commandparameter="{Binding ElementName=MWindow}">
6.Q:asp.net core mvc 将ViewBag中的数据在js中调用/在razor页面中的js代码调用razor变量
A:假设Action传递到Razor View页面一个参数:ViewBag.Title
,在JS中使用这个数据的话需要这样用'@ViewBag.Title'
,就是在@ViewBag.Title
两边加上引号,使用单引号或双引号,这两个都可以
可以使用 @param
,对于要获取的字符串,需要加引号,如'@param
,最好都加上引号,因为你不知道js引用后到底是什么类型的数据
7.Q:使用了Nigix代理后,在使用wpf客户端post方法提交数据时,出现如下错误:
<title>413 request Entity Too Large</title>
<center><h1>413 Request Entity Too Large</h1></center>
<hr><center>nginx/1.10.3</center>
A:在nigix的配置文件中http{}内添加如下内容:
#设置允许发布内容为8M
client_max_body_size 8M;
client_body_buffer_size 128k;
针对post
针对post请求解决办法:
修改nginx.conf里面的几个相关的配置参数
client_body_buffer_size 10m(配置请求体缓存区大小, 不配的话)
client_max_body_size 20m(设置客户端请求体最大值)
client_body_temp_path /data/temp (设置临时文件存放路径。只有当上传的请求体超出缓存区大小时,才会写到临时文件中,注意临时路径要有写入权限)
如果上传文件大小超过client_max_body_size时,会报413 entity too large的错误。
针对get
针对get请求,我们可以通过修改另外两个配置来解决请求串超长的问题: ~~~~
client_header_buffer_size 语法:client_header_buffer_size size 默认值:1k 使用字段:http, server 这个指令指定客户端请求的http头部缓冲区大小绝大多数情况下一个头部请求的大小不会大于1k不过如果有 来自于wap客户端的较大的cookie它可能会大于1k,Nginx将分配给它一个更大的缓冲区,这个值可以在 large_client_header_buffers里面设置。 large_client_header_buffers 语法:large_client_header_buffers number size 默认值:large_client_header_buffers 4 4k/8k 使用字段:http, server 指令指定客户端请求的一些比较大的头文件到缓冲区的最大值,如果一个请求的URI大小超过这个值,服务 器将返回一个"Request URI too large" (414),同样,如果一个请求的头部字段大于这个值,服务器 将返回"Bad request" (400)。 缓冲区根据需求的不同是分开的。 默认一个缓冲区大小为操作系统中分页文件大小,通常是4k或8k,如果一个连接请求将状态转换为 keep-alive,这个缓冲区将被释放。
为什么修改http header的大小就能解决get请求串过长的问题?因为get请求参数会拼在http header中,所以,修改了http header的大小,就能解决上面问题。
8.Q:使用layx弹窗时,如果给父页面传递数据
A:请看例子,示例是在layer例子中看到的
父页面的js代码,其中父页面中包含一个名为Icon
的Input
<script type="text/javascript">
$('#IconBtn').on('click',//绑定IconBtn按钮的点击事件,弹出layx窗口
function () {
layx.iframe('icon', '请选择图标', '/Icon/FontAwesomeIcon');//加载一个图标选择页面
return false;//放在提交数据
});
</script>
在FontAwesomeIcon
页面中使用js代码,使用parent
可以获取父页面上的属性值并给它们赋值
$('#IconSaveBtn').on('click',//绑定IconSaveBtn按钮的点击事件,将选择的数据传到到父窗口
function () {
parent.$('#Icon').val($pickIcon.attr('class'));
parent.layx.destroy('icon');
});
如果可以,需要你的一个关注!!
在Asp.Net Core MVC 开发过程中遇到的问题的更多相关文章
- 在ASP.NET Core MVC中构建简单 Web Api
Getting Started 在 ASP.NET Core MVC 框架中,ASP.NET 团队为我们提供了一整套的用于构建一个 Web 中的各种部分所需的套件,那么有些时候我们只需要做一个简单的 ...
- 在ASP.NET Core MVC中子类Controller拦截器要先于父类Controller拦截器执行
我们知道在ASP.NET Core MVC中Controller上的Filter拦截器是有执行顺序的,那么如果我们在有继承关系的两个Controller类上,声明同一种类型的Filter拦截器,那么是 ...
- ASP.NET Core MVC的路由参数中:exists后缀有什么作用,顺便谈谈路由匹配机制
我们在ASP.NET Core MVC中如果要启用Area功能,那么会看到在Startup类的Configure方法中是这么定义Area的路由的: app.UseMvc(routes => { ...
- ASP.NET Core MVC的Razor视图中,使用Html.Raw方法输出原生的html
我们在ASP.NET Core MVC项目中,有一个Razor视图文件Index.cshtml,如下: @{ Layout = null; } <!DOCTYPE html> <ht ...
- 基于 Asp.Net Core MVC 的 Angular4 SSR 英雄指南
为啥有这篇文章 在之前,类似 Angular.React.Vue 之类的前端框架的一个痛点就是无法在服务端提前把网页内容写入到网页中再发回浏览器,这给网站的 SEO 增加了不少困难,因为爬虫爬到的页面 ...
- ASP.NET Core MVC/WebAPi 模型绑定探索
前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...
- ASP.NET Core MVC 源码学习:详解 Action 的激活
前言 在 上一篇 文章中,我们已经学习了 ASP.NET Core MVC 的启动流程,那么 MVC 在启动了之后,当请求到达过来的时候,它是怎么样处理的呢? 又是怎么样把我们的请求准确的传达到我们的 ...
- ASP.NET CORE MVC 实现减号分隔(Kebab case)样式的 URL
ASP.NET CORE MVC 中,默认的 Route 模板是: /{controller}/{action} .我们可以通过开启 URL 小写转换将 URL 变为小写,但此方式在 Control ...
- ASP.NET Core 入门教程 5、ASP.NET Core MVC 视图传值入门
一.前言 1.本教程主要内容 ASP.NET Core MVC 视图引擎(Razor)简介 ASP.NET Core MVC 视图(Razor)ViewData使用示例 ASP.NET Core MV ...
随机推荐
- 一个普通类就能干趴你的springboot,你信吗?
先声明本人并不是标题党,如果看了本篇文章并且认为没有得到任何收获,请您随便留言骂我,本人绝不还口,已经对springboot了如指掌大大神,求放过! 不BB了,直接上代码,请各位在自己的springb ...
- Windows 10 + kali Linux 双系统安装教程(详细版)
准备工具如下: kali Linux 镜像 准备一4G以上的U盘 制作U盘启动盘工具- Win32DiskImager 添加引导工具-EasyBCD 留出一个空的盘,哪个盘的空间比较大可以压缩出大概2 ...
- open_basedir限制目录
1.open_basedir介绍 前言:前些日我用lnmp一键安装包出现了open_basedir的问题,因为我把项目目录变了,所以要在的fastcgi.conf下面加上open_basedir的目录 ...
- post方式实现导出/下载文件
项目需求: 前端需要传入过多的参数给后端,get地址栏不行,只能接受post方式去导出数据 1.get的下载方式 通常下载方式如下: let url = xxxx.action?a=xx&b= ...
- [BZOJ] DZY Loves Math 系列 I && II
为了让自己看起来有点事干 ,做个套题吧..不然老是东翻翻西翻翻也不知道在干嘛... \(\bf 3309: DZY \ Loves \ Math\) 令 \(h=f*\mu\) 很明显题目要求的就是\ ...
- NOIP模拟 13
我终于又厚颜无耻地赖着没走 ...... T1 矩阵游戏 用了30hmin找规律,然后发现貌似具有交换律,然后发现貌似有通项公式,然后发现貌似每次操作对通项的影响是相同的,然后发现貌似跟N没啥关系.. ...
- 谷歌Chrome浏览器无法安装插件的解决方法(本文干货!)
这个问题困扰了我很久,作为小白学习可能会用到谷歌插件,奈何谷歌也太变态,国内的环境无法正常登录谷歌账户.无法访问应用商店,而Chrome主版本号大于66的只能从Chrome应用商店下载并安装插件,各种 ...
- nginx跨域解决方案
nginx跨域解决方案Access to Font at 'http://47.104.86.187/yinjiatoupiao2/iconfont/iconfont.woff' from origi ...
- windows下载安装swoole的方法
windows下载安装swoole的方法先安装Cygwin 选择163镜像(速度非常快) add url http://mirrors.163.com/cygwin/ 然后安装gcc php pcre ...
- docker监控容器
Weave Scope: 是能够自动生成一张 Docker 容器web动态图的监控软件,能够让我们直观地理解.监控和控制容器. 监控一台主机: 第一步:安装 [root@localhost ~]# c ...