小编Not*_*tre的帖子

通过jQuery将JSON数据发布到ASP .NET MVC 4控制器操作

我在尝试将复杂的JSON对象传递给MVC 4控制器操作时遇到了麻烦.由于JSON内容是可变的,我不希望MVC将JSON的各个属性/元素映射到action方法的参数列表中的参数.我只想在控制器操作中将数据作为单个JSON字符串参数获取.

这是我的动作方法的签名:

    [HttpPost]
    [ValidateInput(false)]
    public string ConvertLogInfoToXml(string jsonOfLog)
Run Code Online (Sandbox Code Playgroud)

这是我尝试从我的浏览器发布一些JSON数据:

    data = {prop: 1, myArray: [1, "two", 3]}; 
    //'data' is much more complicated in my real application
    json = {jsonOfLog: data};

    $.ajax({
        type: 'POST',
        url: "Home/ConvertLogInfoToXml",
        data: JSON.stringify(json),
        success: function (returnPayload) {
            console && console.log ("request succeeded");
        },
        error: function (xhr, ajaxOptions, thrownError) {
            console && console.log ("request failed");
        },
        dataType: "xml",
        contentType: "application/json",            
        processData: false,
        async: false
    });
Run Code Online (Sandbox Code Playgroud)

当我在ConvertLogInfoToXML方法的开头点击断点时,jsonOfLog为空.

如果我更改了JavaScript中设置的'json'变量,以使jsonOfLog属性成为一个简单的字符串,例如:

json = { jsonOfLog: "simple string" };
Run Code Online (Sandbox Code Playgroud)

然后当我在ConvertLogInfoToXML方法开头的断点被命中时,jsonOfLog是字符串的值(例如"简单字符串").

我尝试将action方法中的jsonOfLog参数的类型更改为object类型: …

asp.net-mvc jquery json

28
推荐指数
1
解决办法
11万
查看次数

自定义 Web 表单脚本生成

好吧,是的,现在是 2020 年了,但别笑。我正在尝试更新一些 ASP.NET Web 表单。我的目标是锁定它们,通过应用更严格的内容安全策略 (CSP) 使它们更加安全。为此,我使用随机数,而不是允许unsafe-inline编写脚本。

对于“简单”的网络表单,它工作得很好。然而,只要有 ASP 控件导致回发,我就会遇到问题。当我查看页面源代码时,我看到如下内容:

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
    theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
Run Code Online (Sandbox Code Playgroud)

<script type="text/javascript">
    function previewFile() {
        var preview = document.querySelector('#Body_Main_LogoImage');
        var file = document.querySelector('#Body_Main_logoUpload').files[0];
        var reader = new FileReader();

        reader.onloadend = function () {
            preview.src = reader.result;
        }

        if (file) {
            reader.readAsDataURL(file);
        } …
Run Code Online (Sandbox Code Playgroud)

webforms content-security-policy

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

类型错误:无法使用 ReactDOM 在 Jest 测试中读取未定义的属性“渲染”

我正在尝试为基于 webpack 的应用程序中的测试代码添加 Jest 支持。我想我有基本的配置权利,因为一个非基于组件的测试(比如下面的“添加数字”)通过了。但是,当我尝试与 DOM 交互时,会出现错误。我正在尝试create-react-apps docs docs(测试组件部分)中描述的吸烟测试场景的变体。我的测试文件如下所示:

import React from 'react';
import ReactDOM from 'react-dom';

it('adds number', () => {
  expect(2 + 2).toBe(4);
});

it('renders without crashing', () => {
  const div = document.createElement('div');
  ReactDOM.render(<div/>, div);
});
Run Code Online (Sandbox Code Playgroud)

输出是:

v 加号(10ms)

× 渲染而不会崩溃(3 毫秒)

渲染而不会崩溃

类型错误:无法读取未定义的属性“渲染”

 44 | it('renders without crashing', () => {
 45 |   const div = document.createElement('div');
 46 |   ReactDOM.render(<div/>, div);
    |            ^
 47 | });
Run Code Online (Sandbox Code Playgroud)
  at Object.<anonymous> (/pathto/TestFile.test.tsx:46:12)
Run Code Online (Sandbox Code Playgroud)

我的应用程序不是用 create-react-app 构建的。相反,我尝试按照Jest webpack 文档中 …

webpack jestjs

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

如何为React.Children.map定义打字稿

我有一个查看提供的子代的函数,如果找到了特定的元素类型,它将自动为其添加一些属性。

该函数的调用方式如下:

render () {

    const { children, name, className } = this.props;

    return (
        <div className={className}>
            {this.enrichRadioElements(children, name)}
        </div>
    )
}
Run Code Online (Sandbox Code Playgroud)

它是这样实现的:

enrichRadioElements = (children: Array<any>, name: string) => (
    React.Children.map(children, child => {
        if (!React.isValidElement(child)) {
            return child;
        }

        //@ts-ignore
        if (child.props.children) {
            child = React.cloneElement(child, {
                //@ts-ignore
                children: this.enrichRadioElements(child.props.children, name)
            });
        }

        if (child.type === Radio) {
            return React.cloneElement(child, { 
                onChange: this.handleFieldChange,
                selectedValue: this.state.selectedValue,
                name: name
            })
        }
        else {
            return child;
        }
    })
)
Run Code Online (Sandbox Code Playgroud)

//@ts-ignore我想通过编写满足打字稿要求的代码来摆脱这两个注释。如果删除第一个,则显示的错误消息是: …

typescript reactjs

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