小编Kem*_*siz的帖子

如何在ASP.NET Core MVC中获取Url Referrer?

我正在尝试将ASP.NET MVC webform迁移到ASP.NET Core MVC.目前,我在Request.UrlReferrer上课时遇到了麻烦.

原来的行是:

    [HttpPost]
    public async Task<ActionResult> ContactUsFormSubmit(ContactUs request)
    {
        var siteUrl = Request.UrlReferrer.ToString().ToLower();
        ....
    }
Run Code Online (Sandbox Code Playgroud)

但是,使用ASP.NET Core时,UrlReferrer不可用.我发现了以下内容:

    Request.Headers["Referer"]
Run Code Online (Sandbox Code Playgroud)

返回StringValues而不是String.我不确定我是否应该尝试使用这个或者是否有任何其他解决方案.Request.ServerVariables也不可用或者我没有命名空间.我的命名空间如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
Run Code Online (Sandbox Code Playgroud)

如果有人能指引我朝着正确的方向前进,我真的很感激.

c# asp.net-core-mvc asp.net-core

72
推荐指数
5
解决办法
4万
查看次数

如何提取自定义标头值?

我从我的项目中接受的答案中获得了这个确切的代码,我需要将其迁移到ASP.NET Core MVP中.

如何在Web API消息处理程序中提取自定义标头值?

var env = Request.Headers.GetValues("environment").First();
Run Code Online (Sandbox Code Playgroud)

我如何在.NET Core中实现它?

我希望这不是一个重复的问题,因为我试图用新系统而不是旧系统来做这件事.如果有人在关于当前版本的链接中添加答案,我也会没事的.

编辑:http 5标题的所有类型在ASP.NET 5中消失了吗?我试过这个链接,但API可能已经改变了.我不认为这也是这个问题的重复.

.net c# asp.net .net-core asp.net-core

34
推荐指数
2
解决办法
4万
查看次数

如何在.NET Core中实现DbContext连接字符串?

我的情况与此链接非常相​​似,或者至少我的代码类似,我试图找到一种方法在.NET Core语法中应用相同的方法.

将连接字符串传递给代码优先的DbContext

我的具体代码如下:

public partial class CompanyFormsContext : DbContext
{
    public CompanyFormsContext()
        : base("name=CompanyFormsContext")
    {
    }

    public CompanyFormsContext(string connName)
        : base("name=" + connName)
    {
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误说:

错误CS1503参数1:无法从'string'转换为'Microsoft.EntityFrameworkCore.DbContextOptions'CompanyForms..NETCoreApp,Version = v1.0

当我翻过括号base("name=CompanyFormsContext")base("name=" = connName).

在.NET Core中实现此功能的正确方法是什么?

编辑:

我想分享我在appsettings.json文件中有关于数据库连接的以下信息:(但是,我在startup.cs中没有设置)

  "Data": {
    "CompanyFormsContext": {
      "ConnectionString": "Server=(localdb)\\projectsv13;Database=companyforms;Trusted_Connection=True;"
    },
    "CompanyFormsContextQA": {
      "ConnectionString": "Server=(localdb)\\projectsv13;Database=companyforms;Trusted_Connection=True;"
    }
  }
Run Code Online (Sandbox Code Playgroud)

我发现以下链接在Startup.cs中添加DbContextOptions没有在网站上注册数据存储,我想知道一个简单的protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)是否足以修复我的连接?

从链接:

services.AddEntityFramework(Configuration)
    .AddSqlServer()
    .AddDbContext<MyDbContext>(
        options =>
        options.UseSqlServer(Configuration.Get("Data:CompanyFormsContext:ConnectionString"))
    );
Run Code Online (Sandbox Code Playgroud)

我的Startup.cs中是否需要这种服务?

.net c# asp.net entity-framework

26
推荐指数
4
解决办法
3万
查看次数

ASP.NET Core中的System.Data.Entity.Spatial替换

我正在尝试将一个webform从ASP.NET MVC迁移到ASP.NET Core MVC.目前我正试图找到一种替代方法:

using System.Data.Entity.Spatial;
Run Code Online (Sandbox Code Playgroud)

因为它目前在.NET Core中不可用,或者我可能无法找到它.

有没有办法包括这个包?也许通过NuGet包?

PS.我简要阅读了Microsoft指南,但找不到与之相关的任何内容.对于可能处于类似情况的任何人,指南在此处:https: //docs.asp.net/en/latest/migration/mvc.html

(对不起,如果我写不出一个好问题,我想在这里习惯这个系统)

c# asp.net-core

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

如何将静态类从.NET迁移到.NET Core?

我正在将一个webform(不是WebForm技术,一个精简的Web应用程序转换为webform功能)从ASP.NET MVC迁移到ASP.NET Core MVC.我目前最大的问题是我们在之前版本的webform中使用的静态类.此静态类使用.NET中可用但在.NET Core中不可用的包.

我理解对于这个静态类中的一些方法,我必须使用依赖注入来解决包问题.但是,无法将参数传递给静态类,使其成为.NET Core的"反模式".

我的Utils.cs静态类只有两个方法,RenderPartialToStringSendEmail.SendEmail非常简单,并且当前的.NET Core包没有问题.但是,我的静态类中有以下代码,不适用于当前版本.

public static class Utils
    {

        public static readonly string ApiUrl = ConfigurationManager.AppSettings["ApiUrl"];
        public static readonly string ApiKey = ConfigurationManager.AppSettings["ApiKey"];

        public static string RenderPartialToString(Controller controller, string viewName, object model)
        {
            controller.ViewData.Model = model;

            using (StringWriter sw = new StringWriter())
            {
                ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
                ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
                viewResult.View.Render(viewContext, sw);

                return "document.write('" + sw.GetStringBuilder().Replace('\n', ' ').Replace('\r', ' ').Replace("'","\\'").ToString() + "');"; …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net asp.net-mvc asp.net-core

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

如何为.NET Core View类替换Request.Url.GetLeftPart(UriPartial.Authority)?

我试图从.NET迁移几个View类到.NET Core,我遇到了缺少"Request"类方法的问题.以下问题可能与我的情况有关,但我不确定如何使用UriBuilder或任何其他答案用于此目的.我想问一些更具体和更不同的东西.

什么是ASP.NET Core MVC等同于Request.RequestURI?

我的具体代码如下:

<form id="contactUs" method="post" action="@Request.Url.GetLeftPart(UriPartial.Authority)@Url.Action("ContactUsFormSubmit")" accept-charset="utf-8">
Run Code Online (Sandbox Code Playgroud)

具体来说,我需要替换Request.Url.GetLeftPart(UriPartial.Authority)代码的一部分,因为我认为它不是.NET Core的可用包.

是否有替代.NET Core来获取Url的"权限"部分?由于我缺乏.NET/.NET Core的经验,我可以错过一个简单的参考等吗?

.net c# asp.net asp.net-mvc

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

如何更改CTabCtrl选项卡颜色?

你好,新年快乐,(可以说直到周四)

我正在尝试更改CTabCtrl类中选项卡的颜色.我正在尝试创建自己的ReskinCTablCtrl,以便我可以在单独的类中调用它,并在整个程序中轻松使用它.

目前我能够改变CTabCtrl的背景颜色,但我无法修改标签本身.

我用ON_WM_ERASEBKGND()它画背景,它没有问题:

BOOL ReskinCTabCtrl::OnEraseBkgnd(CDC* pDC)
{
    CRect rect;
    GetClientRect(&rect);
    CBrush myBrush(RGB(51, 51, 51));    // dialog background color
    BOOL bRes = pDC->PatBlt(0, 0, rect.Width(), rect.Height(), PATCOPY);
    pDC->SetBkColor(RGB(51, 51, 51));
    pDC->FillRect(&rect, &myBrush);
    return bRes;
}
Run Code Online (Sandbox Code Playgroud)

但是,我一直不知道更改标签颜色本身.它们仍然是默认的MFC颜色.我试图实施ON_WM_PAINT(),ON_WM_DRAWITEM()但没有任何成功.我想我可以使用OnDraw和DrawItem来获取特定的tab rect,类似于我在这个问题的最后发布的第二个链接示例.

void ReskinCTabCtrl::OnPaint() {

    ...

    // paint the tabs first and then the borders
    int nTab = GetItemCount();
    int nSel = GetCurSel();

    if (!nTab) // no pages added
        return;

    while (nTab--)
    {
        if (nTab != nSel)
        {
            dis.itemID …
Run Code Online (Sandbox Code Playgroud)

c++ mfc ctabctrl

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

Resolver或ServiceProvider使用ICompositeViewEngine所需的依赖项

我试图在ASP.NET Core MVC中使用ICompositeViewEngine替换System.Web.Mvc中的ViewEngine,因为它在.NET Core中不再可用.我通常尝试在此项目中将webform从ASP.NET迁移到ASP.NET Core.

我找到了以下解决方案:MVC 6 Controller中的ControllerContext和ViewEngines属性在哪里?我相信这可以解决我的问题.我还在github问题中找到了与ServiceProvider类似的引擎创建:https://github.com/aspnet/Mvc/issues/3091

但是,我不确定我可能会缺少哪些依赖项或框架,因为我是.NET的新手.我有以下命名空间:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ViewEngines;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.Extensions.DependencyInjection;
Run Code Online (Sandbox Code Playgroud)

我认为这可能与我的问题有关.

我原来的代码是:

    public static string RenderPartialToString(Controller controller, string viewName, object model)
    {
        controller.ViewData.Model = model;

        using (StringWriter sw = new StringWriter())
        {
            ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
            ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
            viewResult.View.Render(viewContext, sw);

            return "document.write('" + sw.GetStringBuilder().Replace('\n', ' ').Replace('\r', ' ').Replace("'","\\'").ToString() + "');";
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在我尝试使用以下任一方法:

 var engine = Resolver.GetService(typeof(ICompositeViewEngine)) as ICompositeViewEngine;
 var …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-core-mvc asp.net-core

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

如何使用 javascript jest 监视导出的独立函数?

这是一个非常简单的场景,但我一直在努力寻找答案。

助手.ts:

export function foo() {
    bar();
}

export function bar() {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

helpers.spec.ts:

import { foo, bar } from "./helpers";

describe("tests", () => {
    it("example test", () => {
        const barSpy = // how can i set this up?
        foo();
        expect(barSpy).toHaveBeenCalled();
    });
});
Run Code Online (Sandbox Code Playgroud)

我不能这样做const spy = jest.spyOn(baz, 'bar');,因为我没有模块/类来代替“baz”。它只是一个导出函数。

编辑Jest 模拟内部函数已被建议作为重复项,但不幸的是它对我的场景没有帮助。

该问题的解决方案:

  • 移至单独的模块:我无法针对我的场景执行此操作。如果我测试应用程序中的每个功能,这将导致我创建 10 个新文件,这并不理想。(澄清一下,我认为这个解决方案可行,但我不能将它用于我的场景。我已经在这个测试文件中成功模拟了一个单独的文件函数。)

  • 将模块导入自身:

helpers.spec.ts:

import * as helpers from "./helpers";

describe("tests", () => {
    it("example test", () => { …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing mocking typescript jestjs

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