Немного обновлено для ядра asp.net ...
[AttributeUsage(AttributeTargets.Method)]
public sealed class CheckRequiredModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
var requiredParameters = context.ActionDescriptor.Parameters.Where(
p => ((ControllerParameterDescriptor)p).ParameterInfo.GetCustomAttribute<RequiredModelAttribute>() != null).Select(p => p.Name);
foreach (var argument in context.ActionArguments.Where(a => requiredParameters.Contains(a.Key, StringComparer.Ordinal)))
{
if (argument.Value == null)
{
context.ModelState.AddModelError(argument.Key, $"The argument '{argument.Key}' cannot be null.");
}
}
if (!context.ModelState.IsValid)
{
var errors = context.ModelState.Values.SelectMany(v => v.Errors).Select(e => e.ErrorMessage);
context.Result = new BadRequestObjectResult(errors);
return;
}
base.OnActionExecuting(context);
}
}
[AttributeUsage(AttributeTargets.Parameter)]
public sealed class RequiredModelAttribute : Attribute
{
}
services.AddMvc(options =>
{
options.Filters.Add(typeof(CheckRequiredModelAttribute));
});
public async Task<IActionResult> CreateAsync([FromBody][RequiredModel]RequestModel request, CancellationToken cancellationToken)
{
//...
}
Вы не помещаете "
перед концом строки.
Используйте " ""
, если хотите:
""" a very long string ......
....that can span multiple lines
"""
(Предполагая, что у вас нет / вы не хотите разрывов строк в вашей строке ...)
Какова на самом деле длина этой строки?
Я подозреваю, что существует ограничение на длину строки, считываемой из файла или из командной строки, и поскольку конец строки обрезается, синтаксический анализатор видит что-то вроде s1 = "какая-то очень длинная строка ..........
(без окончания "
) и, таким образом, вызывает ошибку синтаксического анализа?
Вы можете разделить длинные строки на части. в несколько строк, экранируя разрывы строк в исходном тексте следующим образом:
s1="some very long string.....\
...\
...."