小编Ian*_*n W的帖子

将Json Post Back Data转换为XML

这是我的第一个Web应用程序项目.我使用VS社区,asp.net,bootstrap 4,C#和JS淘汰为我的视图模型,服务器端数据来自公司ERP SQL数据库使用Entity Framework.

这个想法是用户收到要从公司ERP系统批准的项目列表,这些项目被加载到视图模型中.View Model被构造为一个JS Knockout可观察数组,每个项目都是一个可观察的JS敲门项目(参见下面的完整代码)

一旦用户根据需要处理了项目,我希望Web应用程序将整个View Modal作为Json对象回发,并让服务器Post Controller将此Json对象转换为xml以发送到SQL存储过程以进行插入进入SQL数据库,从SQL数据库中处理数据并将其插入ERP数据库

当我尝试动作帖子时,我得到一个405"方法不允许"

> "tags": {
    "ai.cloud.roleInstance": "[MYCOMPUTER].local",
    "ai.operation.id": "c07680cd8c845240a9e3791018c39521",
    "ai.operation.name": "POST ReqsTests",
    "ai.location.ip": "::1",
    "ai.internal.sdkVersion": "web:2.8.0-241",
    "ai.internal.nodeName": "[MYCOMPUTER].local"
  },
  "data": {
    "baseType": "RequestData",
    "baseData": {
      "ver": 2,
      "id": "|c07680cd8c845240a9e3791018c39521.66f8d951_",
      "name": "POST ReqsTests",
      "duration": "00:00:00.0279394",
      "success": false,
      "responseCode": "405",
      "url": "http://localhost:64234/api/ReqsTests/",
      "properties": {
        "DeveloperMode": "true",
        "_MS.ProcessedByMetricExtractors": "(Name:'Requests', Ver:'1.1')"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我认为我没有正确地从客户端收到Json日期.我的想法是因为我正在发送整个模型,这是一个Json列表,但我的控制器不接收List而不是字符串.

任何人都可以解释我的控制器应该如何接收客户端数据这是我从客户端调用我的控制器和服务器Post控制器和完整代码列表如下

 self.postAllReqs = function(self) {
        self.error(''); // Clear error message
        var data = ko.toJSON(self.Reqs); // convert to json
        console.log(data); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net knockout.js

5
推荐指数
1
解决办法
187
查看次数

防止 csv 导入应用程序中的 SQL 注入

这更多的是一个概念问题。

我已经用 C# 构建了一个小型 wpf 应用程序来读取工资单数据的 csv 并将其插入到我的 sql 2005 数据库中,无需编辑或删除。

我已经采取了我能想到的所有步骤来保护应用程序免受用户输入 SQL 注入并阅读该主题。这些步骤包括将连接字符串用户作为低级 sql 用户、将我的数据网格控制列与 sql 表紧密匹配以及不可编辑的用户输入(组合框、文件和日期选择器、仅某个 csv 文件名)。我的数据源更新方法是将csv读取并显示在datagrid中的数据表合并到sql数据表中,然后更新。

我现在有一个想法,最明显的弱点是 csv 文件本身(我可以看到!)。我可以看到有人可以创建一个具有正确文件名的 csv 并在“删除[某些语句]”列中输入,然后将其读入。

所以现在我觉得有必要检查这个输入,但很多文章说这个客户端的东西是浪费时间。其他人的想法是什么?我正在考虑一个简单的类,其中包含要检查的内容列表,例如“sp”、“;”、“选择”、“删除”、“--”,然后是一个函数来根据列表检查 csv 列输入并处理为必需的。

班级理念是不是有点粗糙?

c# sql-server wpf

3
推荐指数
1
解决办法
2831
查看次数

如何设置一个sql字符串而不会在常量错误中获取换行符

这是愚蠢的,但我声明sqlcommand的sql字符串,我不得不在一行上写它作为

string strSQL = "SELECT [Year],[Week No],StartDate,EndDate,Dept,[Clock No],RTRIM(Name)+' '+   RTRIM(initial) as Name,[Own Hours],[Other Hours],[Total Hours],[OT Premium] FROM [Wages].[CHHours] Where [Year]=@WageYear and [Week No]=@Week Order by  [Year] DESC, [Week No] DESC,Dept,[Clock No]" ;
Run Code Online (Sandbox Code Playgroud)

因为否则我会在常量错误中得到换行符,但这看起来真难看,难以阅读.在vb中它会使用&_继续,因为c#不是对空格敏感的(我想)我应该这样写它

string strSQL = "SELECT [Year],[Week No],StartDate,EndDate,Dept,[Clock No],
              RTRIM(Name)+' '+ RTRIM(initial) as Name,[Own Hours],[Other Hours],
               [Total Hours],[OT Premium] 
               FROM [Wages].[CHHours] 
               Where [Year]=@WageYear and [Week No]=@Week 
               Order by  [Year] DESC, [Week No] DESC,Dept,[Clock No]" ;
Run Code Online (Sandbox Code Playgroud)

或者我必须这样做

string strSQL = "SELECT [Year],[Week No],StartDate,EndDate,Dept,[Clock No],";

string strSQL = strSQL+" RTRIM(Name)+' '+ …
Run Code Online (Sandbox Code Playgroud)

c# sql string

1
推荐指数
1
解决办法
1285
查看次数

如何使用ProgressBar更新正确实现BackgroundWorker?

- 更新 - 14/10也问了这个问题

为了让正在发生的事情,并考虑到的意见,并从本文的一些明确的想法在这里

我现在真正想要做的是调用一个带有进度条的新表单并运行和动画,而我的后台线程运行我的长进程到数据库,然后调用一个关闭表单事件

后台工作人员在这里设置

 public partial class MainWindow : Window
{
    //Declare background workers
    BackgroundWorker bw = new BackgroundWorker();
    BackgroundWorker bwLoadCSV = new BackgroundWorker();
    BackgroundWorker bwProgressBar = new BackgroundWorker();
Run Code Online (Sandbox Code Playgroud)

代表们在这里补充道

  public MainWindow()
    {
        bwLoadCSV.WorkerReportsProgress = true;
        bwLoadCSV.WorkerSupportsCancellation = true;
        bwLoadCSV.DoWork += new DoWorkEventHandler(bwLoadCSV_DoWork);
        bwLoadCSV.ProgressChanged += new ProgressChangedEventHandler(bwLoadCSV_ProgressChanged);
        bwLoadCSV.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwLoadCSV_RunWorkerCompleted);
Run Code Online (Sandbox Code Playgroud)

这里的调用是从主窗口类进行的

  private void CSV_Load_Click(object sender, RoutedEventArgs e)
    ///Function to read csv into datagrid
    ///
    {
        //Turn Cursor to wait
        System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;

        //Test …
Run Code Online (Sandbox Code Playgroud)

c# wpf multithreading backgroundworker

0
推荐指数
1
解决办法
2万
查看次数

验证用户输入的十进制数

我有一个wpf文本框,我想检查一下用户输入的内容是否仅使用0 1 2 3 4 5 6 7 8 9。[小数点]字符代表十进制数字。我稍后将使用此文本框转换为小数

我将以下文章用作起点 正则表达式匹配 预览文本输入示例 正则表达式允许一个十进制数或一个十进制数范围

这是我的xaml

<TextBox Grid.Column="1" Height="28" HorizontalAlignment="Left" Margin="10,10,0,0" Name="tbTaxFreeLimit" Width="90" VerticalAlignment="Top" 
                                             AcceptsTab="True" 
                                             PreviewTextInput="tbDecimalCheck_PreviewTextInput"
                                            />
Run Code Online (Sandbox Code Playgroud)

和C#

private void tbDecimalCheck_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
     // Test for decimal
     if (IsNumeric(e.Text)==false)
         e.Handled = true;
}

private bool IsNumeric(string s)
{
    Regex r = new Regex(@"^[0-9]");

    return r.IsMatch(s);
}
Run Code Online (Sandbox Code Playgroud)

此示例适用于0 1 2 3 4 5 6 7 8 9,但我不能输入小数点。

如果我将下面的代码更改为以下代码,则无效

Regex r = new Regex(@"^[0-9].");
Run Code Online (Sandbox Code Playgroud)

c# regex wpf

0
推荐指数
1
解决办法
6043
查看次数