小编Tet*_*oto的帖子

报告定义无效。详细信息:报告定义的目标命名空间无效

报告定义无效。详细信息:报告定义具有无效的目标命名空间“ http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition ”,无法升级。

我正在使用 ASP.NET MVC 框架。setparameter()当我调用将数据设置到 rdlc 设计报告中时出现错误。

viewer.LocalReport.DataSources.Add(new ReportDataSource("SaleDataSet", modelList));这行代码执行成功,并打印了报告。

但在下面一行, viewer.LocalReport.SetParameters(parms); 错误出现了。

本地报告处理期间出现错误。报告定义的目标命名空间无效。

public ActionResult PrintSaleReport(string saleId)
{
    try
    {
        Decimal sId = 0;
        if (!string.IsNullOrEmpty(saleId))
        {
            sId = Convert.ToDecimal(saleId);
        }

        var saleList = new SaleRepository().GetById(sId);
        List<SalesModel> modelList = new List<SalesModel>();
        foreach (var item in saleList.SaleHistories)
        {

            SalesModel obj = new SalesModel();
            obj.StockName = item.Stock.Name;
            obj.saleQuantity = item.Quantity + "";
            obj.SaleHistoryPrice = Math.Round(Convert.ToDecimal(item.SalePrice), 2) + "";
            obj.Expr = Convert.ToDecimal(obj.saleQuantity) * Convert.ToDecimal(obj.SaleHistoryPrice) + "";
            modelList.Add(obj); …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc

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

Razor 页面 - 尝试在 Razor 页面上实现操作过滤器

我想编写一个自定义过滤器,它将检查用户是否登录到我的网站,如果没有,则将他们重定向回登录页面。

我希望过滤器在加载时自动应用于页面。

我已经尝试了下面所示的解决方案,但过滤器目前不起作用。

过滤器代码:

using Microsoft.AspNetCore.Mvc.Filters;

namespace MODS.Filters
{
    public class AuthorisationPageFilter : ActionFilterAttribute
    {
        public override void OnActionExecuted(ActionExecutedContext context)
        {
            System.Diagnostics.Debug.Write("Filter Executed");  //write to debugger to test if working

            //add real code here

            base.OnActionExecuted(context);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

接下来,这是应用于页面模型的过滤器属性:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using MODS.Filters;

namespace MODS.Pages.Menus
{
    [AuthorisationPageFilter]
    public class Admin_MainMenuModel : PageModel
    {
        public ActionResult Admin_MainMenu()
        {
            System.Diagnostics.Debug.Write("Function Executed");
            return new ViewResult();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的印象是,您需要在页面上调用一个操作/方法,以便在页面加载时应用该函数(请告诉我这是否正确),所以这里是调用Admin_MainMenu.cshtml 页面文件中的方法的代码(在剃刀页面顶部的代码块中):

Model.Admin_MainMenu();
Run Code Online (Sandbox Code Playgroud)

我目前的想法是: 1. 过滤器本身的类型错误(可能是IPageFilter?) 2. 我实现它的方式是错误的(无论是我将其应用于页面模型,还是当我调用页面上的方法)。

任何帮助是极大的赞赏。谢谢。

c# filter action-filter razor razor-pages

5
推荐指数
3
解决办法
4846
查看次数

如何生成从控制器到 razorpages 的链接?

我需要创建从 mvc 控制器到 razor 页面的字符串类型链接。Asp.Net 核心 2.2。我使用 IUrlHelper:

int number = 4;
string callbackUrl = Url.Page(
   "/Test/Name",
   pageHandler: null,
   values: new { number },
   protocol: Request.Scheme);
Run Code Online (Sandbox Code Playgroud)

回调 URL 为空。这可以在剃刀页面代码后面工作,但不能从控制器工作。从控制器来看,UrlHelper继承自ControllerBase和razor PageModel,因此有两种不同的实现。但是我怎样才能让控制器 urlhelper 工作,以便我可以创建 razorpages 链接?

(另一个稍微不同的问题是如何以一种好的方式从控制器外部的类库生成这样的链接?)。

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

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

首先用点表示小数,然后用逗号表示

我发现很多解决方案都是用逗号开头,然后是指向,我想要这样的东西: 133.000,00

到目前为止我尝试过的是: @item.Price.ToString("C3", System.Globalization.CultureInfo.CreateSpecificCulture("da-DK"))

@String.Format("{0:#.##0,######}", item.Price)

在第二种格式中,我只会 133000.00

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

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

无法将类型'Program.Data.View'隐式转换为System.linq.iqueryable <Program.Data.View>.

目标/问题:我尝试使用First或FirstOrDefault仅从数据库返回1个结果.我收到以下错误:

无法将类型'Program.Data.view'隐式转换为System.Linq.Iqueryable存在显式转换(您是否缺少转换)

我尝试过: 在浏览文档和许多SO文章后,我尝试了不同的投射方式,包括下面的代码.诸如无法将类型'System.Linq.IQueryable <>隐式转换为的文章.存在显式转换(您是否错过了演员?).大多数文章都是从System.Linq.IQueryable <>转到其他方面,而不是这个方向.无论哪种方式铸造应该相对容易,我缺少什么?:

IQueryable<Program.Data.view> someVariable = db.view.First(m => m.ID == Search_ID);
Run Code Online (Sandbox Code Playgroud)

我的方法签名是:

public IQueryable<Program.Data.view> GetDataFromQuery()
Run Code Online (Sandbox Code Playgroud)

c# linq casting iqueryable

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

如何使用操作过滤器更改输入参数

的背景:

我正在尝试修复潜在的安全问题,以删除作为字符串参数注入到我的 WebAPI 方法中的单引号(这需要在整个应用程序中完成)。

我尝试通过创建一个动作过滤器来完成此任务,该过滤器执行必要的操作

public class ValidateActionParametersAttribute : ActionFilterAttribute, IActionFilter
    {
        public override void OnActionExecuting(HttpActionContext actionExecutedContext)
        {          
            var parameters = actionExecutedContext.ActionArguments;
            var parameterList = parameters.Values.ToList();
            parameterList.Where(x => x.GetType() == typeof(string)).ToList().ForEach(y => y = y.ToString().Replace("\'", ""));            
            base.OnActionExecuting(actionExecutedContext);
        }
    }
Run Code Online (Sandbox Code Playgroud)

并在我的 WebApiConfig 中全局注册它

config.Filters.Add(new ValidateActionParametersAttribute());
Run Code Online (Sandbox Code Playgroud)

但是,当我在代码中放置断点后检查时,ActionFilter 中完成的参数更改似乎没有反映出来。有人可以指导我做错了什么吗?

c# linq action-filter asp.net-web-api

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

具有 url-formencoded 的模型属性自定义名称

我在 webapi (.net core 2.1) 中遇到绑定问题。通常当我使用 xml/json 时,我可以向模型道具添加属性(通过 XmlElement 或 JsonProperty)。但是,我有一个项目使用 application/x-www-form-urlencoded 作为媒体类型,因此,模型仅在参数名称与属性名称匹配时才有效(幸运的是不区分大小写)。您能否建议是否有办法实现这种映射?

c# serialization asp.net-web-api asp.net-core-mvc asp.net-core

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

如何在 Program.Main 上将 SetBasePath 设置为 dll 位置

启动 dotnet dll 时

 cd /
 dotnet /tmp/donetproject/donetproject.dll
Run Code Online (Sandbox Code Playgroud)

编码

.AddJsonFile("hostsettings.json", optional: true)
Run Code Online (Sandbox Code Playgroud)

会看

/hostsettings.json

不是

/tmp/donetproject/hostsettings.json

设置 GetCurrentDirectory 无效

.SetBasePath(Directory.GetCurrentDirectory())
Run Code Online (Sandbox Code Playgroud)
public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }
    public static IWebHostBuilder CreateWebHostBuilder(string[] args)
    {
        var config = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("hostsettings.json", optional: true)
            .AddCommandLine(args)
            .Build();

        return WebHost.CreateDefaultBuilder(args)
            .UseUrls()
            .UseConfiguration(config)
                .UseStartup<Startup>();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

在 C# 中将 UTC 日期时间转换为本地日期时间

我想显示将根据用户的时区管理的事件的日期和时间。要检查时区,我将系统时区更改为另一个时区,但我的代码仍在获取本地时区。这是我的代码

我正在使用 Cassendra 数据库和 C# .NET MVC

DateTime startTimeFormate = x.Startdate;
DateTime endTimeFormate = x.Enddate;
TimeZone zone = TimeZone.CurrentTimeZone;
DateTime startTime = zone.ToLocalTime(startTimeFormate);
DateTime endTime = zone.ToLocalTime(endTimeFormate);
Run Code Online (Sandbox Code Playgroud)

c# timezone datetime

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

表单内的 asp-action 不会进入控制器

我有一个表格:

@model TodoItem
<form asp-action="/Todo/AddItem" method="POST">
    <label asp-for="Title">Add a new item:</label>
    <input asp-for="Title">
    <button type="submit">Add</button>
</form>
Run Code Online (Sandbox Code Playgroud)

我在 Index.html 中调用它

@await Html.PartialAsync("AddItemPartial", new TodoItem())
Run Code Online (Sandbox Code Playgroud)

单击按钮时调用控制器:

public async Task<IActionResult> AddItem(TodoItem newItem)
{ 
  //code that calls service...
}
Run Code Online (Sandbox Code Playgroud)

我从未在 AddItem 上遇到断点,我读到它可能是由于 _ViewImports.cshtml 不在同一文件夹中或者它不包含 @addTagHelper 导致 asp 操作未触发。尝试了这些解决方案,但没有成功。

任何帮助,将不胜感激。

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

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