ASP.NET核心中的URL编码和解码

时间:2017-07-05 08:30:13

标签: asp.net-core asp.net-core-mvc

public class Solution extends JFrame {
    private static final String FILE_NAME_1 = "Selected SOLL:";
    private File file;
    private void setNewButton(Container contentPane, final String fileName, String format) {
        contentPane.add(Box.createVerticalStrut(5));
        final Label label = new Label("Select " + fileName + " in ." + format +" format");
        contentPane.add(label);
        contentPane.add(Box.createVerticalStrut(10));
        Button selection = new Button("Select " + fileName);
        contentPane.add(selection);
        selection.addActionListener(new FileSelectionListener("Only " + format + " is allowed", format) {
            @Override
            protected void setSelection(File selectedFile) {
                setFile(selectedFile);  // call file setter here
                label.setText("Selected" + fileName + selectedFile.getAbsolutePath());
            }
        });
    }

    // define a setter for your File member
    private void setFile(File file) {
        this.file = file;
    }

    public void uploadFiles() {
        Container contentPane = this.getContentPane();
        setNewButton(contentPane, FILE_NAME_1, "xls");
    }
}

它仅适用于.NET Framework。如何在ASP.NET Core项目中编码或解码uri参数?

5 个答案:

答案 0 :(得分:121)

  • 对于ASP.NET Core 2.0+,只需添加System.Net命名空间 - WebUtility类作为System.Runtime.Extensions nuget包的一部分提供,在ASP.NET中默认引用核心项目。

  • 对于以前的版本,添加Microsoft.AspNetCore.WebUtilities nuget包。

然后WebUtility课程将为您提供:

public static class WebUtility
{
    public static string UrlDecode(string encodedValue);
    public static string UrlEncode(string value);
}

答案 1 :(得分:69)

可在System.Net.WebUtility.UrlEncode @Override public Page<DeviceData> findFirstXByDeviceAndTopicOrderByDateDesc(String device, String topic, int x, Pageable pageable) { Query query = new Query(Criteria.where(DEVICE_KEY).is(device).and(TOPIC_KEY).is(topic)); query.with(new Sort(Sort.Direction.DESC, DATE_KEY)); query.limit(x); query.with(pageable); List<DeviceData> list = mongoTemplate.find(query, DeviceData.class); Page<DeviceData> page = new PageImpl<DeviceData>(list); return page; } version 2.0.0 of the .Net Core SDK

上的see documentation上找到

答案 2 :(得分:24)

对于ASP.Net Core 2.0+,如果需要空格编码为%20

而不是+;

使用:

 Uri.EscapeDataString(someString);

答案 3 :(得分:2)

不要浪费你的时间,我对这些所谓的url编码器有丰富的经验,它们都没用,并且有不同的怪癖。例如,WebUtility.UrlEncode没有照顾&#34; +&#34;登录。

如果要对URL参数进行编码,请使用BASE58编码。它只使用字母+数字,因此您不需要进行网址编码。

答案 4 :(得分:0)

我使用的是重定向,而UrlEncode对我不起作用,因为它对整个URL进行了编码。我通过使用UriHelper.Encode解决了这一问题,如下所示。

UriHelper.Encode

// generate url string...
return Redirect(Microsoft.AspNetCore.Http.Extensions.UriHelper.Encode(new System.Uri(url)));