如何将c#中的变量传递给前端

Posted

技术标签:

【中文标题】如何将c#中的变量传递给前端【英文标题】:How to pass variables in c# to frontend 【发布时间】:2021-09-30 16:32:39 【问题描述】:

我正在使用反向地理编码来获取可读的用户地址,即使用 restful api 的国家和地区。我想在前端显示它,但我不确定如何将它传递到前端。我可以根据自己的喜好解析 json 响应并获取所需的数据,我只想将这两个变量显示为一个连接字符串。我在用户模型中有经度和纬度字段。也许变量超出范围?

后端

    namespace VescovererWebApp.Pages
    
        public class AccountModel : PageModel
        
            private readonly VescovererWebApp.Data.ApplicationDbContext _context;
    
    
            public AccountModel(VescovererWebApp.Data.ApplicationDbContext context)
            
                _context = context;
            
    
            public User User  get; set; 
    
            public async Task<IActionResult> OnGetAsync(int? id)
            
    
                if (id == null)
                
                    return NotFound();
                
    
                User = await _context.User.FirstOrDefaultAsync(m => m.ID == id);
    
    
                using (var httpClient = new HttpClient())
                
                    using (var response = await httpClient.GetAsync($"http://api.positionstack.com/v1/reverse?access_key=apikey&query=User.Latitude,User.Longitude"))
    
    
                    
                        string apiResponse = await response.Content.ReadAsStringAsync();
                        
                        JObject o = JObject.Parse(apiResponse);
                        var region = o["data"][0]["region"];
                        var country = o["data"][0]["country"];
                        System.Diagnostics.Debug.WriteLine(region);
                        System.Diagnostics.Debug.WriteLine(country);
    
                    
                
    
    
                if (User == null)
                
                    return NotFound();
                
                return Page();
    
               
    
            
        
    

**Razor page**

    <div>
        <hr />
        <dl class="row">
            <dt class="col-sm-2">
                @html.DisplayNameFor(model => model.User.Longitude)
            </dt>
            <dd class="col-sm-10">
                @Html.DisplayFor(model => model.User.Longitude)
            </dd>
            <dt class="col-sm-2">
                @Html.DisplayNameFor(model => model.User.Latitude)
            </dt>
            <dd class="col-sm-10">
                @Html.DisplayFor(model => model.User.Latitude)
            </dd>
            
        </dl>
    </div>

我想删除这些行,基本上只有一个显示可读地址。

【问题讨论】:

【参考方案1】:

将属性地址添加到后面的代码中

  public string Address get; set;
....
  public async Task<IActionResult> OnGetAsync(int? id)
  
.....
        Address= "Country - " + country +" Region "+region;
          

和页面

 <dt class="col-sm-2">
     @Html.DisplayNameFor(model => model.Address)
 </dt>
 <dd class="col-sm-10">
     @Html.DisplayFor(model => model.Address)
 </dd>

【讨论】:

以上是关于如何将c#中的变量传递给前端的主要内容,如果未能解决你的问题,请参考以下文章

如何将 C# 类字符串变量传递给 sbyte* 参数?

如何将对象列表从 C++ 传递到 C#?

将变量传递给存储过程,c#

如何将Django模板变量传递给外部JS?

如何将 C# 中的二维数组传递给 C++ DLL?

如何将 C# 中的方法指针传递给 C 库?