I'm looking for a way to validate and check the values of the model that is sent to my PATCH method for updating. I haven't found my answer yet.
我已经阅读了 JsonPatch 文档,但没有找到我想要的。
场景:我有一个 RESTful Web API,并且说我有一个名为“users”的资源。假设客户端想要部分更新“用户”资源:(PATCH api/users/{id}),例如,当客户端发送 JsonPatch 文档时,我必须检查是否发送电子邮件进行更新,如果是,我必须检查电子邮件是否重复。那么,我怎么能用下面这样的方法来做到这一点:(我使用 ASP.NET Web API)
[HttpPatch]
[Route("{userId}")]
public HttpResponseMessage UpdateUser(int userId, JsonPatch.JsonPatchDocument<User> patchDocument)
{
// I could do this but before that I wanna validate the proeprties:
patchDocument.ApplyUpdatesTo(dbContext.Users.Single(u => u.Id == userId));
}
Run Code Online (Sandbox Code Playgroud) 我是 SPA 框架和 Blazor 的新手,因此这可能是一个很容易回答的问题,尽管我在其他地方找不到答案。
我想在用户单击特定按钮后立即在页面上的某个位置显示一个组件。我目前是这样实现的:
@page "/test"
<button type="button" @onclick="() => showSignUpComponent = true">
Show Sign Up Window
</button>
@if (showSignUpComponent)
{
<SignUp />
}
@code {
bool showSignUpComponent;
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好、更干净的方法(即正确的方法)在 Blazor 中执行类似的操作,或者这是常见的“标准”方法?
有谁知道如何在 c# asp.net core 中压缩任何类型(jpg、png、gif 等)的图像。WebP 在核心上不起作用。我下载了 ImageProcessor Core 库,但不知道如何压缩/降低图像质量。这是我们尝试过的,但没有奏效。
newImage.Quality = old_image.Quality-20;
newImage.HorizontalResolution = 0;
newImage.VerticalResolution = 0;
Run Code Online (Sandbox Code Playgroud) 一个CSS规则皮棉是:“这是最好不要使用的ID中选择”。那么,我们应该使用什么来代替 ID 来指向一个唯一元素?例如,假设我有几十个元素的类名为my-class,而我只希望其中一个具有特殊的 CSS 属性。我能做什么?
我一直在学习C#中的协方差和协方差,但是在深入探讨之前,出现了一个问题:
class Program
{
static void Main(string[] args)
{
PersonCollection<Person> personCollection = new PersonCollection<Person>();
IMyCollection<Teacher> myCollection = personCollection; // Here's the error:
// Cannot implicitly convert type 'PersonCollection<Teacher>' to 'IMyCollection<Person>'
}
}
class Person { }
class Teacher : Person { }
interface IMyCollection<T> { }
class PersonCollection<T> : IMyCollection<T> { }
Run Code Online (Sandbox Code Playgroud)
众所周知,我们可以将派生类的实例隐式转换为基类。因此,在上面的代码中,虽然“老师”类是从“人”类派生的,但IMyCollection<Teacher>不能转换为IMyCollection<Person>,为什么?(注意:我想知道原因,而不是解决方法)
我进行了 AJAX 调用,将图像文件发送到我的 Web 服务 (.asmx) 方法之一。一切都很好,但问题是 Web 服务返回 XML 而不是 JSON,因为我必须设置为'contentType'' false',否则文件无法发送。(如果我设置contentType为application/json; charset=utf-8,它会返回 JSON,但我不能这样做,因为我正在发送一个文件。)
这是我的 JavaScript:
function setAvatar(imageFile, successCallback) {
var formData = new FormData();
formData.append("UploadedAvatar", imageFile);
$.ajax({
type: "POST",
url: "/Services/UserService.asmx/SetAvatar",
contentType: false,
processData: false,
dataType: 'json',
data: formData,
success: function (result) {
alert(result.d);
alert(result.d.IsSuccessful);
if (typeof successCallback === 'function')
successCallback(result);
}
});
Run Code Online (Sandbox Code Playgroud)
以及网络服务方法:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Result SetAvatar()
{
HttpPostedFile postedFile = HttpContext.Current.Request.Files["UploadedAvatar"];
Image avatar = Image.FromStream(postedFile.InputStream, true, …Run Code Online (Sandbox Code Playgroud) 假设您有一个Author域类和一个Book域类,每个类Author可以有 0 个或多个Books(一对多关系)。
如果您执行以下操作:
var dtos = dbContext.Authors.Select(a => new
{
Name = a.Name,
BookNames = a.Books.Select(b => b.Name).ToList()
}).ToList();
Run Code Online (Sandbox Code Playgroud)
您希望生成以下 SQL,因为您只请求了作者姓名和每位作者的书名:
SELECT [a].[Name], [b].[Name]
FROM [Authors] AS [a]
LEFT JOIN [Books] AS [b] ON [a].[Id] = [b].[AuthorId]
ORDER BY [a].[Id], [b].[Id]
Run Code Online (Sandbox Code Playgroud)
但是,实体框架会导致生成以下 SQL:
SELECT [a].[Name], [a].[Id], [b].[Name], [b].[Id]
FROM [Authors] AS [a]
LEFT JOIN [Books] AS [b] ON [a].[Id] = [b].[AuthorId]
ORDER BY [a].[Id], [b].[Id]
Run Code Online (Sandbox Code Playgroud)
这显然是不必要地检索所有作者的 ID 和他们所有书籍的 ID。
这是当您从另一方(即从书籍到作者)进行连接时不会发生这种情况。例如,当您请求书名及其作者姓名时,例如:
var …Run Code Online (Sandbox Code Playgroud) 我有三个实体:
每门“课程”由若干“课”组成。课程中的“课程”可以分为“部分”,也可以不分为“部分”。
因此,课程的内容可能如下所示:
Foo Course:
Lesson 1
Lesson 2
Lesson 3
Lesson 4
Run Code Online (Sandbox Code Playgroud)
或者像这样:
Bar Course:
Section 1:
Lesson 1
Lesson 2
Section 2:
Lesson 3
Lesson 4
Run Code Online (Sandbox Code Playgroud)
因此,换句话说,一门课程可以直接有“课程”,也可以有“部分”,而“部分”又有“课程”。
从另一个角度来看,“课程”可以直接属于“课程”,也可以属于“部分”,而“部分”又属于“课程”。
我正在努力找出如何最好地在关系数据库中实现这样的结构。
如果每个“课程”都必须属于一个“部分”,那就很容易了,我可以简单地有一个“课程”表,一个带有“CourseId”列的“部分”表,以及一个带有“课程”表的“课程”表“SectionId”列。
但我的情况并不那么简单。“部分”可能作为“课程”和多个“课程”之间的中间人存在,但也可以不存在,在这种情况下,“课程”直接具有“课程”,而不存在“部分”。
对于如何在关系数据库的上下文中理想地实现这种结构的任何建议,我将不胜感激。
谢谢。
我有疑问,我没有在其他任何地方找到答案.
客户可以更改我脚本中的函数参数,变量和...的值吗?
例如,我有一个调用JS函数的按钮,该函数从数据库中删除具有指定Id的产品:
<button onclick="deleteProduct(productId: 123);">Delete Product</button>
Run Code Online (Sandbox Code Playgroud)
当客户来到我的网站时,他们可以打开浏览器的"检查元素"工具,手动更改我的JS函数(deleteProduct)的product id参数值.然后他们可以通过更改productId删除任何产品.
这可能吗?如果是,我们如何防止它?
我在使用 Web.config 中的元素时遇到问题httpErrors。
我决定使用 httpErrors 元素来处理 http 错误并在我的 (ASP.NET MVC) 应用程序中显示自定义错误页面。问题是我还有一个 API,我不希望 httpErrors 元素处理其错误,它有自己的自定义错误响应。
我希望在 API 方面禁用它。
我可以做些什么来实现我想要的吗?
asp.net ×3
c# ×3
javascript ×2
ajax ×1
asp.net-core ×1
asp.net-mvc ×1
blazor ×1
browser ×1
client ×1
css ×1
csslint ×1
database ×1
generics ×1
inheritance ×1
jquery ×1
json-patch ×1
patch ×1
rest ×1
sql-server ×1
stylesheet ×1
web-config ×1
web-services ×1
xml ×1