c# - 将 ViewData 从 C# 控制器传递到视图到 Angular 控制器
问题描述
所以我是一个非常新的 AngularJS 用户,这是我第一次使用 .NET Core 并尝试修改我继承的代码。我正在使用 StreamReader 读取文件,并将行数成功传递到我的主索引视图。
public IActionResult Index(int? period, int? length)
{
if (User.Identity.IsAuthenticated)
{
ViewData["Name"] = GetUsersName();
return View();
} else
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
ViewData["period"] = period;
ViewData["length"] = length;
}
从那里我希望将 int 长度移动到我的视图中,以便我可以将值传递给我的 Angular 控制器以进行简单的计算。
主页索引标题:
@{
ViewData["Title"] = "Home Page";
var user = Json.Serialize(ViewData["Name"]);
var length = Json.Serialize(ViewData["length"]);
}
<div class="" ng-controller="homeController as home"
ng-init="home.initValues(); home.move(@length)">
<div id="myProgress">
<div id="myBar">0%</div>
</div>
<button style="margin: 5px" ng-click='home.move()'>Refresh Status</button>
<div>Stream Length: @length</div>
</div>
我试图将变量打印到屏幕上,以简单地查看 int 值是否正确传递,尽管它只显示为“null”。
最终目标是在我的 Angular 控制器中填充值,以用我上传的文件的最新行数替换硬编码值“23894”。
self.move = function (streamLength){
var elem = document.getElementById("myBar");
var percent = self.variances[0].totalVariances;
console.log("Total variances: " + percent);
console.log("Stream length: " + streamLength);
var width = 1;
var id = setInterval(frame, 10);
function frame() {
if (width >= (percent / 23894) * 100) {
clearInterval(id);
} else {
width++;
elem.style.width = width + '%';
elem.innerHTML = width * 1 + '%';
}
}
console.log("Percentage: " + width);
console.log(percent / 23894);
}
最终计算将有助于为我的状态栏选择合适的“填充”。
非常感谢任何建议或建议!
解决方案
好吧,我成功地将变量传递给控制器。据我所知,这是两件事。首先是 C# Home 控制器:
public IActionResult Index(int? period, int? length)
{
if (User.Identity.IsAuthenticated)
{
ViewData["Name"] = GetUsersName();
ViewData["length"] = length;
return View();
} else
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
ViewData["period"] = period;
}
在 If 循环中返回 View 之前移动 ViewData 人口至关重要。代码以前从未到达过,并且在到达 ViewData 之前就被踢出。
其次似乎是我没有正确地将变量传递给控制器。这有效:
@{
ViewData["Title"] = "Home Page";
var user = Json.Serialize(ViewData["Name"]);
var length = Json.Serialize(ViewData["length"]);
var streamLength = (ViewData["length"]);
}
<div class="" ng-controller="homeController as home"
ng-init="home.initValues(); home.move(@length)">
<div id="myProgress">
<div id="myBar">0%</div>
</div>
<button style="margin: 5px" ng-click='home.move(@length)'>Refresh Status</button>
<div>Stream Length: @streamLength </div>
</div>
得到教训。
推荐阅读
- pytorch - 无法更改 Faster RCNN 中的锚点
- google-cloud-platform - BigQuery Table 每天多个分区
- javascript - 地理位置真的很慢我做错了什么?
- c# - 如何将特定行放在 datagridview 中?
- python-3.x - 将指定的行拆分为多个文件
- python - 将浮点日期转换为 YYYY-MM-DD 格式
- python - 如何在后台运行无限循环?
- pandas - 为什么dataframe.drop_duplicates('name') 正确,dataframe.drop_duplicates('age') 不行?
- django - 在特定参数下创建新对象
- android - 修改使用热敏打印机打印的阿拉伯字母