ASP.NET C# MVC:如何将控制器值传递至cshtml页面?
解决Razor页面显示Customer对象数据的问题
嘿,我来帮你搞定这个问题!你现在的核心问题是没有把创建好的Customer对象传递给视图,所以页面根本拿不到你设置的那些属性值。咱们一步步来修正:
第一步:修改控制器代码,传递模型到视图
你当前的return View();没有传入任何数据,视图自然接收不到。把代码改成这样,把创建好的objCustomer传给视图:
public ActionResult Index() { Customer objCustomer = new Customer(); objCustomer.Id = 1001; objCustomer.CustomerCode = "C001"; objCustomer.Amount = 900.78; // 将Customer对象传递给视图 return View(objCustomer); }
第二步:设置强类型视图(推荐)
为了让视图能识别你的Customer模型,还能获得智能提示,在Index.cshtml的最顶部添加@model指令,记得把YourProjectName换成你自己的项目名称(比如你的项目叫ShopDemo,那就是ShopDemo.Models.Customer):
@model YourProjectName.Models.Customer
第三步:在视图中渲染数据
现在视图已经能拿到模型数据了,你可以用多种方式显示:
方式1:直接输出属性
<div class="customer-info"> <h4>客户详情</h4> <p>客户ID:@Model.Id</p> <p>客户编码:@Model.CustomerCode</p> <p>账户金额:@Model.Amount</p> </div>
方式2:用表格展示(更规整)
<table style="border-collapse: collapse; width: 300px;"> <thead> <tr> <th style="border:1px solid #ccc; padding:8px;">字段</th> <th style="border:1px solid #ccc; padding:8px;">值</th> </tr> </thead> <tbody> <tr> <td style="border:1px solid #ccc; padding:8px;">客户ID</td> <td style="border:1px solid #ccc; padding:8px;">@Model.Id</td> </tr> <tr> <td style="border:1px solid #ccc; padding:8px;">客户编码</td> <td style="border:1px solid #ccc; padding:8px;">@Model.CustomerCode</td> </tr> <tr> <td style="border:1px solid #ccc; padding:8px;">账户金额</td> <td style="border:1px solid #ccc; padding:8px;">@Model.Amount</td> </tr> </tbody> </table>
可选:用ViewBag传递数据(不推荐,强类型更可靠)
如果你不想用强类型,也可以通过ViewBag临时传递数据,控制器代码改成:
public ActionResult Index() { Customer objCustomer = new Customer(); objCustomer.Id = 1001; objCustomer.CustomerCode = "C001"; objCustomer.Amount = 900.78; // 把对象存入ViewBag ViewBag.Customer = objCustomer; return View(); }
然后视图里这样获取(需要强制类型转换):
<p>客户ID:@((YourProjectName.Models.Customer)ViewBag.Customer).Id</p>
不过还是更推荐用强类型视图,不仅有智能提示,还能在编译阶段发现错误,比ViewBag更可靠。
内容的提问来源于stack exchange,提问作者user1724708
相关产品推荐
相关产品推荐

