亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將數據從控制器傳遞到 Blazor 上的視圖?

如何將數據從控制器傳遞到 Blazor 上的視圖?

C#
搖曳的薔薇 2023-07-09 15:10:04
我嘗試使用 Blazor(服務器端)創建一個項目并將視圖創建為 .razor,并且還添加了控制器。如何將數據從控制器傳遞到視圖 .razor ?我想我可以在控制器中創建一個公共變量,這將是控制器和.razor 的交互。但我不知道代碼I want get var u to the view//Controller[HttpPost("[action]")]public void Save(IList<IFormFile> UploadFiles){    var u = UploadFiles.FirstOrDefault().FileName;    long size = 0;    size = SaveUploadedFiles(UploadFiles, size);}//View<EjsUploader ID="UploadFiles">  <UploaderAsyncSettings SaveUrl="api/Save" RemoveUrl="api/Remove"></UploaderAsyncSettings></EjsUploader>
查看完整描述

1 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

此處支持同步融合。


您可以使用“Headers”或“ReasonPhrase”將數據從控制器傳遞到成功事件中的視圖,如下面的代碼示例中所述。


[示例數據控制器.cs]



public void Save(IList<IFormFile> UploadFiles)

? ? ? ? {

? ? ? ? ? ? long size = 0;

? ? ? ? ? ? try

? ? ? ? ? ? {

? ? ? ? ? ? ? ? foreach (var file in UploadFiles)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? var filename = ContentDispositionHeaderValue

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .Parse(file.ContentDisposition)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .FileName

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .Trim('"');

? ? ? ? ? ? ? ? ? ? filename = hostingEnv.ContentRootPath.Replace("WebApplication6.Server", "WebApplication6.Client") + $@"\{filename}";

? ? ? ? ? ? ? ? ? ? size += (int)file.Length;

? ? ? ? ? ? ? ? ? ? if (!System.IO.File.Exists(filename))

? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? using (FileStream fs = System.IO.File.Create(filename))

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ? ? ? file.CopyTo(fs);

? ? ? ? ? ? ? ? ? ? ? ? ? ? fs.Flush();

? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? Response.Headers.Add("custom-header", "Syncfusion");

? ? ? ? ? ? ? ? Response.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = "Syncfusion Upload";

? ? ? ? ? ? }

? ? ? ? ? ? catch (Exception e)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? Response.Clear();

? ? ? ? ? ? ? ? Response.StatusCode = 204;

? ? ? ? ? ? ? ? Response.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = "File failed to upload";

? ? ? ? ? ? ? ? Response.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = e.Message;

? ? ? ? ? ? }

? ? ? ? }

[索引.剃刀]



@using Newtonsoft.Json;

@using Newtonsoft.Json.Converters;


<EjsUploader Id="UploadFiles" AutoUpload="true" Success="@OnSuccess">

? ? <UploaderAsyncSettings SaveUrl="api/SampleData/Save" RemoveUrl="api/SampleData/Remove"></UploaderAsyncSettings>

</EjsUploader>

<p>Additional Header Text is: @HeaderData</p>

<p>Additional Response Data is: @ResponseData</p>


@code{

public string HeaderData;


public string ResponseData;


public void OnSuccess(object args)

{


? ? SuccessEventArgs eventArgs = JsonConvert.DeserializeObject<SuccessEventArgs>(args.ToString());

? ? HeaderData = eventArgs.Response.Headers;

? ? ResponseData = eventArgs.Response.StatusText;

? ? this.StateHasChanged();

}

//Success event args class.

public class SuccessEventArgs

{

? ? public object E { get; set; }

? ? public FileInfo File { get; set; }

? ? public string StatusText { get; set; }

? ? public string Name { get; set; }

? ? public string Operation { get; set; }

? ? public ResponseEventArgs Response { get; set; }

}


public class ResponseEventArgs

{

? ? public string Headers { get; set; }

? ? public object ReadyState { get; set; }

? ? public object StatusCode { get; set; }

? ? public string StatusText { get; set; }

? ? public bool withCredentials { get; set; }

}

}



And, you need to enable the allow header option in the Startup.cs file as mentioned in the below code example.



? public void ConfigureServices(IServiceCollection services)

? ? ? ? {

? ? ? ? ? ? services.AddMvc().AddNewtonsoftJson();

? ? ? ? ? ? services.AddResponseCompression(opts =>

? ? ? ? ? ? {

? ? ? ? ? ? ? ? opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(

? ? ? ? ? ? ? ? ? ? new[] { "application/octet-stream" });

? ? ? ? ? ? });

? ? ? ? ? ? services.AddCors(options =>

? ? ? ? ? ? {

? ? ? ? ? ? ? ? options.AddPolicy("EnableCORS", builder =>

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? builder.AllowAnyOrigin().AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials().Build();

? ? ? ? ? ? ? ? });

? ? ? ? ? ? });

? ? ? ? }


查看完整回答
反對 回復 2023-07-09
  • 1 回答
  • 0 關注
  • 133 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號