【发布时间】:2019-11-01 08:15:45
【问题描述】:
我的 javascript 中有一个 razor 部分,但无法访问已作为参数放入 js 函数的 js 变量。
我正在尝试序列化一个列表,然后将 json 字符串反序列化为一个 js 数组。
<script>
function listContainerBlobs(json, container) {
@*var arr = @JsonConvert.DeserializeObject(json);*@
var arr = JSON.parse(json);
var blobs = document.getElementById('container-blob-display').innerHTML = "<h4>" + container + "</h4>";
var otherDiv = document.getElementById('section-1');
var thisDiv = document.getElementById('section-2');
otherDiv.style.display = 'none';
thisDiv.style.display = 'block';
var blobNumber = 0;
for (i = 0; i < arr.length; i++){
blobNumber++;
var blobId = "blobId" + blobNumber;
blobs += "<p class='search-result' id='" + blobId + "' onclick='downloadBlob('" + blobId + "', '" + arr[i].Name + "', '" + container + "')' style='float: left; '>" + arr[i].Name + "</p>";
}
}</script>
这是 razor 页面中的 C# 代码,用于序列化方法返回的列表。我想知道json字符串的格式是否不同,因此我无法在js中反序列化json字符串。
var blobs = await Model.ListContainerBlobs(container.Name);
var jsonBlob = Json.Serialize(blobs);
//var jsonBlob = JsonConvert.SerializeObject(blobs);
我在一些 lopps 和 html 页面中的东西中使用了 blobs,但我认为我会将此方法调用重用于 js 函数 listContainerBlobs(json, container) 中的参数,因此是 json 序列化。
Js-函数调用:
<p class="search-result blob-container" id="@containerId" onclick="listContainerBlobs('@jsonBlob','@containerModel.Name')">@containerModel.Name</p>
通过阅读this、this 和this,我想我只能接受我不能在剃须刀中调用 js 变量。
是否有人对此有解决方法,或者对此 c# 列表的序列化/反序列化有更好的解决方案?
如果这里重要的是我序列化成的不同 json 类型
- Json.Serialize(blob); :
"[{\"StreamWriteSizeInBytes\":4194304,\"ServiceClient\":{\"BufferManager\":null,\"Credentials\":{\"SASToken\":null,\"AccountName\": \"devstoreaccount1\",\"KeyName\":null,\"IsAnonymous\":false,\"IsSAS\":false,\"IsSharedKey\":true,\"IsToken\":false,\"SASSignature\ ":null},\"BaseUri\":\"http://127.0.0.1:10000/devstoreaccount1\",\"StorageUri\":{\"PrimaryUri\":\"http://127.0.0.1:10000/devstoreaccount1\",\"SecondaryUri\":\"@987654327 @\"},\"DefaultRequestOptions\":{\"RetryPolicy\":{},\"AbsorbConditionalErrorsOnRetry\":null,\"LocationMode\":0,\"ServerTimeout\":null,\"MaximumExecutionTime\" :null,\"ParallelOperationThreadCount\":1,\"SingleBlobUploadThresholdInBytes\":134217728,\"UseTransactionalMD5\":null,\"StoreBlobContentMD5\":null,\"DisableContentMD5Validation\":null},\"RetryPolicy\": {},\"DefaultDelimiter\":\"/\",\"AuthenticationScheme\":1},\"StreamMinimumReadSizeInBytes\":4194304,\"Properties\":{\"CacheControl\":null,\"ContentDisposition \":null,\"ContentEncoding\":null,\"ContentLanguage\":null,\"Length\":68,\"ContentMD5\":\"YUP3oQ5rwX9qEtwa7Op0I w==\",\"ContentType\":\"text/plain\",\"ETag\":\"\\"0x8D757BD9E066830\\"\",\"Created\":\"2019-10- 22T09:06:29+00:00\",\"LastModified\":\"2019-10-23T13:33:40+00:00\",\"BlobType\":2,\"LeaseStatus\": 2,\"LeaseState\":1,\"LeaseDuration\":0,\"PageBlobSequenceNumber\":null,\"AppendBlobCommittedBlockCount\":null,\"IsServerEncrypted\":true,\"IsIncrementalCopy\":false, \"StandardBlobTier\":0,\"RehydrationStatus\":null,\"PremiumPageBlobTier\":null,\"BlobTierInferred\":false,\"BlobTierLastModifiedTime\":null,\"DeletedTime\":null,\" RemainingDaysBeforePermanentDelete\":null},\"Metadata\":{},\"Uri\":\"http://127.0.0.1:10000/devstoreaccount1/first-container/FirstBlob.txt\",\"StorageUri\":{\"PrimaryUri\":\"http://127.0.0.1:10000/devstoreaccount1/first-container/FirstBlob.txt\" ,\"SecondaryUri\":\"http://127.0.0.1:10000/devstoreaccount1-secondary/first-container/FirstBlob.txt\"},\"SnapshotTime\":null,\"IsSnapshot\":false,\"IsDeleted\":false,\"SnapshotQualifiedUri\":\"@987654331 @\",\"SnapshotQualifiedStorageUri\":{\"PrimaryUri\":\"http://127.0.0.1:10000/devstoreaccount1/first-container/FirstBlob.txt\",\"SecondaryUri\":\"http://127.0.0.1:10000/devstoreaccount1-secondary/first-container/FirstBlob.txt\"},\"CopyState\":null,\"名称\":\"FirstBlob.txt\",\"Container\":{\"ServiceClient\":{\"BufferManager\":null,\"Credent ials\":{\"SASToken\":null,\"AccountName\":\"devstoreaccount1\",\"KeyName\":null,\"IsAnonymous\":false,\"IsSAS\":false,\ "IsSharedKey\":true,\"IsToken\":false,\"SASSignature\":null},\"BaseUri\":\"http://127.0.0.1:10000/devstoreaccount1\",\"StorageUri\":{\"PrimaryUri\" :\"http://127.0.0.1:10000/devstoreaccount1\",\"SecondaryUri\":\"http://127.0.0.1:10000/devstoreaccount1-secondary\"},\"DefaultRequestOptions\":{\"RetryPolicy\":{},\"AbsorbConditionalErrorsOnRetry\":null,\" LocationMode\":0,\"ServerTimeout\":null,\"MaximumExecutionTime\":null,\"ParallelOperationThreadCount\":1,\"SingleBlobUploadThresholdInBytes\":134217728,\"UseTransactionalMD5\":null,\"StoreBlobContentMD5\ ":null,\"DisableContentMD5Validation\":null},\"RetryPolicy\":{},\"DefaultDelimiter\":\"/\",\"AuthenticationScheme\":1},\"Uri\":\ "http://127.0.0.1:10000/devstoreaccount1/first-container\",\"StorageUri\":{\"PrimaryUri\":\"http://127.0.0.1:10000/devstoreaccount1/first-container\",\"SecondaryUri\":\"http://127.0.0.1:10000/devstoreaccount1-secondary/first-container\"},\"名称\":\ "first-container\",\"Metadata\":{},\"Properties\":{\"ETag\":null,\"HasImmutabilityPolicy\":null,\"HasLegalHold\":null,\"LastModified \":null,\"LeaseStatus\":0,\"LeaseState\":0,\"LeaseDura化\":0,\"PublicAccess\":null}},\"Parent\":{\"ServiceClient\":{\"BufferManager\":null,\"Credentials\":{\"SASToken\" :null,\"AccountName\":\"devstoreaccount1\",\"KeyName\":null,\"IsAnonymous\":false,\"IsSAS\":false,\"IsSharedKey\":true,\"IsToken \":false,\"SASSignature\":null},\"BaseUri\":\"http://127.0.0.1:10000/devstoreaccount1\",\"StorageUri\":{\"PrimaryUri\":\"http://127.0.0.1:10000/devstoreaccount1\",\ "SecondaryUri\":\"http://127.0.0.1:10000/devstoreaccount1-secondary\"},\"DefaultRequestOptions\":{\"RetryPolicy\":{},\"AbsorbConditionalErrorsOnRetry\":null,\"LocationMode\":0,\"ServerTimeout\ ":null,\"MaximumExecutionTime\":null,\"ParallelOperationThreadCount\":1,\"SingleBlobUploadThresholdInBytes\":134217728,\"UseTransactionalMD5\":null,\"StoreBlobContentMD5\":null,\"DisableContentMD5Validation\": null},\"RetryPolicy\":{},\"DefaultDelimiter\":\"/\",\"AuthenticationScheme\":1},\"Uri\":\"http://127.0.0.1:10000/devstoreaccount1/first-container\",\"StorageUri \":{\"PrimaryUri\":\"http://127.0.0.1:10000/devstoreaccount1/first-container\",\"SecondaryUri\":\"http://127.0.0.1:10000/devstoreaccount1-secondary/first-container\"},\"Container\":{\"ServiceClient\":{\"BufferManager \":null,\"Credentials\":{\"SASToken\":null,\"Accoun tName\":\"devstoreaccount1\",\"KeyName\":null,\"IsAnonymous\":false,\"IsSAS\":false,\"IsSharedKey\":true,\"IsToken\":false, \"SASSignature\":null},\"BaseUri\":\"http://127.0.0.1:10000/devstoreaccount1\",\"StorageUri\":{\"PrimaryUri\":\"http://127.0.0.1:10000/devstoreaccount1\",\"SecondaryUri\": \"http://127.0.0.1:10000/devstoreaccount1-secondary\"},\"DefaultRequestOptions\":{\"RetryPolicy\":{},\"AbsorbConditionalErrorsOnRetry\":null,\"LocationMode\":0,\"ServerTimeout\":null,\ "MaximumExecutionTime\":null,\"ParallelOperationThreadCount\":1,\"SingleBlobUploadThresholdInBytes\":134217728,\"UseTransactionalMD5\":null,\"StoreBlobContentMD5\":null,\"DisableContentMD5Validation\":null},\" RetryPolicy\":{},\"DefaultDelimiter\":\"/\",\"AuthenticationScheme\":1},\"Uri\":\"http://127.0.0.1:10000/devstoreaccount1/first-container\",\"StorageUri\":{\ "PrimaryUri\":\"http://127.0.0.1:10000/devstoreaccount1/first-container\",\"SecondaryUri\":\"http://127.0.0.1:10000/devstoreaccount1-secondary/first-container\"},\"Name\":\"first-container\",\"Metadata\":{} ,\"Properties\":{\"ETag\":null,\"HasImmutabilityPolicy\":null,\"HasLegalHold\":null,\"LastModified\":null,\"LeaseStatus\":0,\" LeaseState\":0,\"LeaseDuration\":0,\"PublicAccess\":null}},\ "父\":null,\"前缀\":\"\"},\"BlobType\":2}]"
- Jsonconvert.SerializeObject(blob); :
{[{"streamWriteSizeInBytes":4194304,"serviceClient":{"bufferManager":null,"credentials":{"sasToken":null,"accountName":"devstoreaccount1","keyName":null,"isAnonymous ":false,"isSAS":false,"isSharedKey":true,"isToken":false,"sasSignature":null},"baseUri":"http://127.0.0.1:10000/devstoreaccount1","storageUri":{"primaryUri":"@ 987654353@","secondaryUri":"http://127.0.0.1:10000/devstoreaccount1-secondary"},"defaultRequestOptions":{"retryPolicy":{},"absorbConditionalErrorsOnRetry":null,"locationMode":0,"serverTimeout":null,"maximumExecutionTime":null ,"parallelOperationThreadCount":1,"singleBlobUploadThresholdInBytes":134217728,"useTransactionalMD5":null,"storeBlobContentMD5":null,"disableContentMD5Validation":null},"retryPolicy":{},"defaultDelimiter":"/","authenticationScheme" :1},"streamMinimumReadSizeInBytes":4194304,"properties":{"cacheControl":null,"contentDisposition":null,"contentEncoding":null,"contentLanguage":null,"length":68,"contentMD5":" YUP3oQ5rwX9qEtwa7Op0Iw==","contentType":"text/plain","eTag":"\u00220x8D757BD9E066830\u0022","created":"2019- 10-22T09:06:29+00:00","lastModified":"2019-10-23T13:33:40+00:00","blobType":2,"leaseStatus":2,"leaseState":1 ,"leaseDuration":0,"pageBlobSequenceNumber":null,"appendBlobCommittedBlockCount":null,"isServerEncrypted":true,"isIncrementalCopy":false,"standardBlobTier":0,"rehydrationStatus":null,"premiumPageBlobTier":null," blobTierInferred":false,"blobTierLastModifiedTime":null,"deletedTime":null,"remainingDaysBeforePermanentDelete":null},"metadata":{},"uri":"http://127.0.0.1:10000/devstoreaccount1/first-container/FirstBlob.txt","storageUri":{"primaryUri": "http://127.0.0.1:10000/devstoreaccount1/first-container/FirstBlob.txt","secondaryUri":"http://127.0.0.1:10000/devstoreaccount1-secondary/first-container/FirstBlob.txt"},"snapshotTime":null,"isSnapshot":false,"isDeleted":false,"snapshotQualifiedUri":"http://127.0.0.1:10000/devstoreaccount1/first-container/FirstBlob.txt","snapshotQualifiedStorageUri":{ "primaryUri":"http://127.0.0.1:10000/devstoreaccount1/first-container/FirstBlob.txt","secondaryUri":"http://127.0.0.1:10000/devstoreaccount1-secondary/first-container/FirstBlob.txt"},"copyState":null,"name":"FirstBlob.txt","container":{"serviceClient":{"bufferManager" :null,"credentials":{"sasToken":null,"accountName":"devstoreaccount1","keyName":null,"isAnonymous":false,"isSAS":false,"isSharedKey":true,"isToken":假,"sasSignature":null},"baseUri":"@9876 54361@","storageUri":{"primaryUri":"http://127.0.0.1:10000/devstoreaccount1","secondaryUri":"http://127.0.0.1:10000/devstoreaccount1-secondary"},"defaultRequestOptions":{"retryPolicy":{},"absorbConditionalErrorsOnRetry":null,"locationMode ":0,"serverTimeout":null,"maximumExecutionTime":null,"parallelOperationThreadCount":1,"singleBlobUploadThresholdInBytes":134217728,"useTransactionalMD5":null,"storeBlobContentMD5":null,"disableContentMD5Validation":null},"retryPolicy" :{},"defaultDelimiter":"/","authenticationScheme":1},"uri":"http://127.0.0.1:10000/devstoreaccount1/first-container","storageUri":{"primaryUri":"http://127.0.0.1:10000/devstoreaccount1/first-container","secondaryUri":"@ 987654366@"},"name":"first-container","metadata":{},"properties":{"eTag":null,"hasImmutabilityPolicy":null,"hasLegalHold":null,"lastModified":null ,"leaseStatus":0,"leaseState":0,"leaseDuration":0,"publicAccess":null}},"parent":{"serviceClient":{"bufferManager":null,"credentials":{"sasToken ":null,"accountName":"devstoreaccount1","keyName":null,"isAnonymous":false,"isSAS":false,"isSharedKey":true,"isToken":false,"sasSignature":null}," baseUri":"http://127.0.0.1:10000/devstoreaccount1","sto rageUri":{"primaryUri":"http://127.0.0.1:10000/devstoreaccount1","secondaryUri":"http://127.0.0.1:10000/devstoreaccount1-secondary"},"defaultRequestOptions":{"retryPolicy":{},"absorbConditionalErrorsOnRetry":null,"locationMode":0," serverTimeout":null,"maximumExecutionTime":null,"parallelOperationThreadCount":1,"singleBlobUploadThresholdInBytes":134217728,"useTransactionalMD5":null,"storeBlobContentMD5":null,"disableContentMD5Validation":null},"retryPolicy":{}," defaultDelimiter":"/","authenticationScheme":1},"uri":"http://127.0.0.1:10000/devstoreaccount1/first-container","storageUri":{"primaryUri":"http://127.0.0.1:10000/devstoreaccount1/first-container","secondaryUri":"http://127.0.0.1:10000/devstoreaccount1-secondary/first-container"}, "container":{"serviceClient":{"bufferManager":null,"credentials":{"sasToken":null,"accountName":"devstoreaccount1","keyName":null,"isAnonymous":false,"isSAS" :false,"isSharedKey":true,"isToken":false,"sasSignature":null},"baseUri":"http://127.0.0.1:10000/devstoreaccount1","storageUri":{"primaryUri":"http://127.0.0.1:10000/devstoreaccount1","secondaryUri" :"http://127.0.0.1:10000/devstoreaccount1-secondary"},"defaultRequestOptions":{"retryPolicy":{},"absorbConditionalErrorsOnRetry":null,"locationMode":0,"serverTimeout":null,"maximumExecutionTime":null," parallelOperationThreadCount":1,"singleBlobUploadThresholdInBytes":134217728,"useTransactionalMD5":null,"storeBlobContentMD5":null,"disableContentMD5Validation":null},"retryPolicy":{},"defaultDelimiter":"/","authenticationScheme":1 },"uri":"http://127.0.0.1:10000/devstoreaccount1/first-container","storageUri":{"primaryUri":"http://127.0.0.1:10000/devstoreaccount1/first-container","secondaryUri":"http://127.0.0.1:10000/devstoreaccount1-secondary/first-container"},"name":"first-container","metadata ":{},"properties":{"eTag":null,"hasImmutabilityPolicy":null,"hasLegalHold":null,"lastModified":null,"leaseStatus":0,"leaseState":0,"leaseDuration": 0,"publicAccess":null}},"parent":null,"prefix":""},"blobType":2}]}
要重新创建它,请通过 C# 序列化一个 List,通过 onclick="" 将 json 字符串发送到您的 js 函数并反序列化函数内的字符串。
【问题讨论】:
-
为什么不能在
listContainerBlobs函数中将@JsonConvert.DeserializeObject(json)替换为JSON.parse(json)?JSON.parse(注意,p中的小写parse)适用于数组。如果由于某种原因它对您不起作用,您能否在您的问题中发布 minimal reproducible example 以便我们重现该问题? -
@BrianRogers JSON.parse 会很棒(然后我不必在 javascript 中使用 raor)。虽然我收到一个错误,我想知道这是否是因为 json.parse 和 Json.Serialize 的 json 字符串格式不同(也尝试过 JsonConvert.SerializeObject,但它们似乎都不起作用)。我会更新我的问题。
标签: javascript json razor json.net