ASP.NET Core:如何将Controller计算的SumValue传递至View并显示?
问题分析与解决方案
核心错误点
- Controller的
Sum方法中赋值语句错误:你给model.Sum赋值,但Model类的属性是SumValue,应改为model.SumValue = Sum(); Sum方法返回View时未传递更新后的model,导致视图无法获取计算后的值- 使用
asp-for时,若表单未指定action,默认会提交到当前路由,而你的Sum方法对应的视图不存在(当前使用的是Index视图),因此出现找不到页面的错误
修正后的代码
Controller类
public IActionResult Index() { var model = new SumModel(); return View(model); } [HttpPost] public IActionResult Sum(SumModel model) { // 修正属性赋值 model.SumValue = Sum(); // 返回Index视图并传递更新后的model return View("Index", model); } // 补充Sum方法的实现(根据实际需求修改计算逻辑) private string Sum() { // 示例计算逻辑 return "100"; }
View类(Index.cshtml)
确保表单正确提交到Sum方法,同时绑定显示计算后的值:
@model YourNamespace.SumModel <!DOCTYPE html> <html> <head> </head> <body> <label>Sum Value:</label> <!-- 使用asp-for绑定属性,设置readonly --> <input type="text" asp-for="SumValue" readonly /> <!-- 添加表单,指定提交到Sum方法 --> <form asp-action="Sum" method="post"> <button type="submit">计算</button> </form> </body> </html>
Model类(无需修改)
public class SumModel { public string SumValue { get; set; } }
额外说明
- 确保你存在
Index.cshtml视图,Sum方法返回时指定视图名"Index",就不会跳转到不存在的Sum视图 asp-for标签助手会自动绑定Model的属性值,只要Controller传递了正确的model,就能显示计算后的结果
内容的提问来源于stack exchange,提问作者Dazzler
相关产品推荐
相关产品推荐

