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');
});
如果可以,需要你的一個關注!!