我有一个将集合初始化为默认状态的类。当我从一些保存的 JSON 加载对象时,它会附加值而不是覆盖集合。有没有办法在反序列化而不是附加值时让 JSON.Net 替换集合?
void Main() {
string probMatrix = "{\"Threshold\":0.0276,\"Matrix\":[[-8.9,23.1,4.5],[7.9,2.4,4.5],[9.4,1.4,6.3]]}";
var probabiltyMatrix = JsonConvert.DeserializeObject<ProbabiltyMatrix>(probMatrix);
probabiltyMatrix.Dump();
}
// Define other methods and classes here
public class ProbabiltyMatrix {
public ProbabiltyMatrix() {
// Initialize the probabilty matrix
Matrix = new List<double[]>();
var matrixSize = 3;
for (var i = 0; i < matrixSize; i++) {
var probArray = new double[matrixSize];
for (var j = 0; j < matrixSize; j++) {
probArray[j] = 0.0;
}
Matrix.Add(probArray);
}
}
public double Threshold; …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个在C#中访问Amazon Mechanical Turk Web服务的简单示例.我知道有一个用于C#的SDK,但我想在使用之前了解基本的机制.
我正在获取从 REST Web 服务返回的用于调查响应的 JSON。它有一些名称值对的名称部分的数组。此外,名称将根据所问问题的类型而变化。我正在使用 JSON.net 并尝试将返回的值反序列化为某种类型的对象树,我可以遍历该对象树,但无法确定使用什么结构来填充它。
我在 LinqPad 中测试了以下代码段,并且字段始终为空。有什么方法可以轻松读取变量数据还是必须在代码中解析它?
void Main() {
string json = @"{
'result_ok':true,
'total_count':'51',
'data':[{
'id':'1',
'status':'Deleted',
'datesubmitted':'2015-01-12 10:43:47',
'[question(3)]':'Red',
'[question(4)]':'Blue',
'[question(18)]':12,
'[variable(\'STANDARD_IP\')]':'127.0.0.1',
'[variable(\'STANDARD_GEOCOUNTRY\')]':'United States'
}]
}";
var responses = JsonConvert.DeserializeObject<RootObject>(json);
responses.Dump();
}
public class RootObject {
public bool result_ok { get; set; }
public string total_count { get; set; }
public List<Response> data { get; set; }
}
public class Response {
public string id { get; set; }
public string status { get; …Run Code Online (Sandbox Code Playgroud) 我发现在页面上有多个处理程序的示例以及相关的命名约定(即OnPostXXX)和'asp-post-hanlder'标记帮助程序.但是如何从AJAX调用中调用其中一个方法.
我有一个典型的MVC视图和控制器的旧示例,但这如何与Razor页面一起使用?
例如,如果我使用基本应用程序并将About.cshtml页面修改为以下内容:
@page
@model AboutModel
@{
ViewData["Title"] = "About";
}
<h2>@ViewData["Title"]</h2>
<h3>@Model.Message</h3>
<input type="button" value="Ajax test" class="btn btn-default" onclick="ajaxTest();" />
@section Scripts {
<script type="text/javascript">
function ajaxTest() {
console.log("Entered method");
$.ajax({
type: "POST",
url: '/About', // <-- Where should this point?
contentType: "application/json; charset=utf-8",
dataType: "json",
error: function (xhr, status, errorThrown) {
var err = "Status: " + status + " " + errorThrown;
console.log(err);
}
}).done(function (data) {
console.log(data.result);
})
}
</script>
}
Run Code Online (Sandbox Code Playgroud)
在模型页面About.cshtml.cs上
public class AboutModel : …Run Code Online (Sandbox Code Playgroud) 我有以下简单的构建管道在 Azure DevOps 中工作,发布版本部署到暂存槽。
我想要一个构建修订/版本字符串,它是自动递增的。然后我想在我的网络应用程序中显示它,这样我就可以知道正在生产的软件版本。
目前我显示 .csproj 文件中的版本字符串。像这样的东西在
<Version>1.1.4.7</Version>
Run Code Online (Sandbox Code Playgroud)
然后使用以下代码显示在网页上:
Version: @typeof(Startup).Assembly.GetName().Version.ToString()
Run Code Online (Sandbox Code Playgroud)
如果我可以更新现有的版本字符串,那就太好了,但我愿意更改为最容易集成到 CI 过程中的任何内容。
我有一个从 PageModel 继承的基类(称为 BmsPageModel)。我需要在每个页面上调用 BmsPageModel 中的一个方法,以便可以根据权限正确填充菜单。
如何让从我的基类继承的每个页面在每个 OnGet 处理程序期间/之后调用此方法,而无需在每个页面中手动键入?
使用以下测试类
public class Test {
[DefaultValue("Black")]
public Color ForeColor = Color.Black;
}
Run Code Online (Sandbox Code Playgroud)
以及以下序列化代码:
var test = new Test();
var json = JsonConvert.SerializeObject(test, Newtonsoft.Json.Formatting.None,
new JsonSerializerSettings {
NullValueHandling = NullValueHandling.Ignore,
DefaultValueHandling = DefaultValueHandling.Ignore
});
Run Code Online (Sandbox Code Playgroud)
我明白了
{"ForeColor":"Black"}
Run Code Online (Sandbox Code Playgroud)
如果 Color 属性与指定的默认值相同,是否有一种(简单)方法可以使 Color 属性不被序列化。
尝试上传大于 4MB 的文件会导致RequestBodyTooLarge抛出异常并显示以下消息:
The request body is too large and exceeds the maximum permissible limit.
Run Code Online (Sandbox Code Playgroud)
虽然此限制记录在 REST API 参考 ( https://learn.microsoft.com/en-us/rest/api/storageservices/put-range ) 中,但未记录 SDK 上传* 方法 ( https:// learn.microsoft.com/en-us/dotnet/api/azure.storage.files.shares.sharefileclient.uploadasync?view=azure-dotnet)。也没有解决此问题的示例。
那么如何上传大文件呢?
我们有C#代码来处理我们创建的各种XML文档.通常我们需要获得一个已知的子元素(它可能是唯一的孩子或可能有其他兄弟姐妹).我有一个给父母的函数,子名称将返回子元素:
public static XmlElement GetChildElement(XmlElement parentElement, string childName)
{
return parentElement.GetElementsByTagName(childName).Cast<XmlElement>().FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但有一天我想知道是否可以使用XPath或LINQ to XML更清晰,更容易.我发现的大多数XPath示例似乎都想知道文档的整个结构,我想要一个只知道父和子的泛型函数.Linq to XML似乎更有前途,但我没有找到一个匹配我正在寻找的例子.
尝试使用预定义的样式来样式化表,但是没有任何效果。我尝试了一个新创建的文档和一个从保存的模板创建的文档。使用SDK Productivity工具,我可以看到模板中有样式,但尚未应用。我尝试添加样式或直接设置样式,但似乎都没有用。
public static void CreateWordprocessingDocument(string fileName) {
string[,] data = {
{"Texas", "TX"},
{"California", "CA"},
{"New York", "NY"},
{"Massachusetts", "MA"}
};
using (var wordDocument = WordprocessingDocument.Open(fileName, true)) {
// We need to change the file type from template to document.
wordDocument.ChangeDocumentType(WordprocessingDocumentType.Document);
var body = wordDocument.GetDocument().Body;
Table table = new Table();
TableProperties props = new TableProperties();
TableStyle tableStyle = new TableStyle { Val = "Light Shading Accent 1" };
props.TableStyle = tableStyle;
//props.Append(tableStyle);
table.AppendChild(props);
for (var i = 0; i …Run Code Online (Sandbox Code Playgroud) c# ×9
json ×3
json.net ×3
asp.net-core ×2
razor-pages ×2
ajax ×1
azure ×1
azure-devops ×1
azure-files ×1
build ×1
docx ×1
linq-to-xml ×1
ms-word ×1
openxml ×1
xml ×1
xpath ×1