在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 ...
随机推荐
- Https 与 iOS 信息安全
转载自:swift-cafe 什么是 Https 咱们从最直观的说起. 我们平时在用电脑访问网页的时候,有时候会在地址栏的左边多出一个小锁的图标,就像这样: 这是大多数主流浏览器的一个通用做法,当我们 ...
- 《Effective Java》 读书笔记(三) 使用私有构造方法或枚举实现单例类
1.单例类到现在为止算是比较熟悉的一种设计模式了,最开始写单例模式是在C#里面,想要自己实现一个单例类,代码如下: public class Instance { private static rea ...
- os模块操作文件
os模块: path=os.path.join(os.path.dirname(os.path.dirname(__file__)),'images') path:运行脚本的当前文件下的上一个文件的地 ...
- 【Java实践】Kettle从一次实验说起
一,安装Kettle 1,关于简易安装Kettle 第一次接触kettle(以前只是听过罢了),摸索了几天,在mac源码安装失败,转而快速安装.在mac上安装最新版kettle并成功启动代码如下: ☁ ...
- 学习笔记 : python 文件操作
1.如果文件路径带有 \ 比如 open('c:\python\test.txt') 会报:SyntaxError: (unicode error) 'unicodeescape' codec ...
- 基于c/s架构的远程登陆服务的步骤。
1:上/下位机安装相应的服务程序.(确保内核支持该服务)2:上位机(作为服务器端)配置能够给下位机访问目录的所在地,及其读写权限.3:在/dev目录下创建该服务其所需要使用的虚拟文件设备,同时按照该服 ...
- canvas与工作流的不解之缘
html的标签 <canvas>用于图形的绘制,通过脚本 (通常是JavaScript)来完成,canvas简而言之就是个画布.上一篇文章我们提到工作流的一个重要组成部分:流程建模,也就是 ...
- python中字符串常见操作(二)
# 可迭代对象有:字典,列表,元组,字符串,集合 str1 = '192.168.1.1' str2 = 'as df gh jk' str3 = '小李子' str4 = ['aa','bb','c ...
- windows系统cmd命令行窗口查看端口占用情况
# 查看所有在用端口 netstat -ano # 查看指定端口 netstat -ano | findstr 8899 # 结束该进程:taskkill /f /t /im javaw.exe:或者 ...
- lqb 基础练习 十六进制转八进制 (字符串进行进制转化)
基础练习 十六进制转八进制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n ...