小编Chr*_*ris的帖子

T-SQL:CHECK约束不起作用

我有以下T-SQL架构.我遇到的问题是Download表上的检查约束不起作用.我仍然可以将记录插入到包含该表NULL的两个值ProductIdCategoryId.为什么会这样?

我希望两个ProductIdCategoryId列都允许NULL值,但对于任何给定的记录,只允许其中一个设置为NULL,另一个需要是CategoryProduct表的相应Id .

CREATE TABLE Category (
    Id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
    Description nvarchar(100) NULL,
    ParentCategoryId int NULL
    CONSTRAINT fk_CategoryId_CategoryId FOREIGN KEY (Id) REFERENCES Category(Id)
)
GO

CREATE TABLE Product (
    Id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
    Title nvarchar(100) NOT NULL,
    TagLine nvarchar(MAX) NOT NULL,
    Description nvarchar(MAX)NULL,
    CategoryId int NOT NULL,
    ImageUrl nvarchar(255) NULL,
    Keywords nvarchar(200) NOT …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server check-constraints

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

ModelState中需要的DateTime,但永远不会设置为

我的表单中有一个DateTime字段.无论出于何种原因,每次我提交表单时,ModelState都会返回无效状态,并且需要我的日期时间字段(称为PostDate)的消息,即使在视图模型中我没有设置所需的属性.

有谁知道为什么会发生这种情况,因为我正在试图解决这个问题.

这是视图模型

public class BlogViewModel
        {
            [Required]
            public string Title { get; set; }
            [Required]
            public string Content { get; set; }
            public bool Published { get; set; }
            public DateTime PostDate { get; set; }
        }
Run Code Online (Sandbox Code Playgroud)

这是控制器动作

            public ActionResult Create()
            {
                return View();
            } 

            //
            // POST: /Admin/Blog/Create

            [HttpPost]
            [ValidateInput(false)]
            public ActionResult Create(BlogViewModel model)
            {
                if(ModelState.IsValid)
                {
                    model.Content = HtmlSanitizer.SanitizeHtml(model.Content);
                    Services.BlogService.CreateBlogPost(model.Title, model.Content, User.Identity.Name);
                    return RedirectToAction("Index");
                }
                return View(model);
            }
Run Code Online (Sandbox Code Playgroud)

这是视图

    @using Payntbrush.Infrastructure.Mvc.Extensions
    @model Payntbrush.Presentation.Demo.MVC3.Areas.Admin.Models.BlogViewModel

    @Html.Resource(Html.ScriptTag("Areas/Admin/js/plugins/wysiwyg/jquery.wysiwyg.js"), ResourceType.Js)


    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc modelstate asp.net-mvc-3

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

如何在 UseEndpoints 之前检查 .NET Core 中间件中的路由是否有效?

我正在使用 .NET Core 3.1,创建一个 Web api。

我的 API 控制器正在映射为以下内容:

app.UseEndpoints(endpoints => endpoints.MapControllers());
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以让我仅在路由匹配时但在执行实际控制器操作之前执行操作?

我所处的情况是,我需要在执行应用程序逻辑之前在数据库中创建一个实体。

我最初考虑了一个自定义中间件,但只是意识到,如果我将中间件放置在它之前,app.UseEndpoints它将触发任何和所有请求(将创建大量虚拟实体),即使是那些不路由的请求。

如果我在之后放置它就为时app.UseEndpoints已晚,因为应用程序代码已经执行了。

在之前运行的中间件中管理路由白名单app.UseEndpoints是一个想法,但这会带来维护麻烦。

那么有没有一种方法可以挂钩端点路由,或者框架中的 API 可以让我“抢先”确定路由是否有效?

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

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

控制器执行的哪一点是TempData填充的

我的控制器有一个基类.在基类的构造函数中,我试图从TempData填充ViewBag属性.但是,似乎TempData在此时没有填充,也不在OnBeginExecute方法中.

我需要在基类中填充此ViewBag属性,因为所有控制器都需要相同的变量(它是重定向消息).

我可以使用哪个覆盖基类中的Controller来执行此操作?

asp.net-mvc razor asp.net-mvc-3

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

php preg_match返回意外的真实

谁能向我解释为什么这会回来TRUE?还有7个z它应该返回,FALSE因为我在正则表达式中设置了最大限制为6.

preg_match('/z{4,6}/', "zzzzzzz")
Run Code Online (Sandbox Code Playgroud)

php regex

0
推荐指数
1
解决办法
97
查看次数

预期')'之前';' 代币

与C有一个奇怪的一天.我获得了expected ‘)’ before ‘;’该行的编译错误令牌else if(inputIntWithinRange(r, 1, MAX_MINES_GRID) == FALSE) validated = FALSE;

如果我评论该行,我不再收到错误.据我所知,我的语法很好,有没有人知道这里发生了什么?

谢谢!

do
   {
      validated = TRUE;

      getUserInput(input, MAX_MINES_LENGTH + EXTRA_SPACES);
      sscanf(input, "%d", &r);

      if(inputWithinAllowedLength(input) == FALSE) validated = FALSE;
      else if(inputDigitsOnly(input) == FALSE) validated = FALSE;
      else if(inputIntWithinRange(r, 1, MAX_MINES_GRID) == FALSE) validated = FALSE;
   }
   while(validated == FALSE);
Run Code Online (Sandbox Code Playgroud)

c syntax

0
推荐指数
1
解决办法
5003
查看次数

fwrite一直在失败,不知道为什么

在我下面的代码中,据我所知,文件正在正确写入.当我查看文件floats.dat时,我看到了这个二进制流ÍÌL@33c@ÍÌÜ@ffFAßOeA^@^@bBf6zE33äCff<83>BÍ̦B

但是我的程序总是会触发这个if语句:

if(fread(inputFloats, sizeof(float), LENGTH, binaryFile) < LENGTH)
{
   fprintf(stderr, "Problem reading some or all data from %s\n\n", binaryFileName);
   return EXIT_FAILURE;
}
Run Code Online (Sandbox Code Playgroud)

有人看到我在这里做错了吗?完整代码如下.

#include <stdlib.h>
#include <stdio.h>
#define LENGTH 10

int main(void)
{
   FILE *binaryFile, *textFile;
   char *binaryFileName = "floats.dat", *textFileName = "floats.txt";
   float floats[LENGTH] = {3.2, 3.55, 6.9, 12.4, 14.332, 56.5, 4003.4, 456.4, 65.7, 83.4};
   float inputFloats[LENGTH];
   int i;

   if((binaryFile = fopen(binaryFileName, "r+")) == NULL)
   {
      fprintf(stderr, "Problem opening %s", binaryFileName);
   }

   if(fwrite(floats, sizeof(float), LENGTH, binaryFile) < LENGTH) …
Run Code Online (Sandbox Code Playgroud)

c fwrite

0
推荐指数
1
解决办法
1979
查看次数

迷失在JavaScript范围内

有人可以帮我解决下面的(简化)代码.我试图doTheSlide()从幻灯片事件函数中调用该函数.我对JS的范围理解还是有点阴暗.

实现这一目标的正确方法是什么?我收到这个错误:

Uncaught TypeError: object is not a function

(function($) {

    bindEvent = function(slider) {

        slider.bind('slide', function(event, ui) {

            doTheSlide(ui.value);
        });
    }

    doTheSlide = function(value) {
        //Animate the slide
    }


    var methods


})(jQuery);
Run Code Online (Sandbox Code Playgroud)

javascript scope event-handling

0
推荐指数
1
解决办法
154
查看次数

在Visual Studio中运行所有测试项目

我的解决方案中每个项目都有一个测试项目.有没有办法让我可以同时运行所有这些或者我在做梦?

unit-testing visual-studio

0
推荐指数
1
解决办法
1853
查看次数