我试图从字符串
中的视图中获取数据这里是View
中的代码
<a href="/Admin/ViewCustomerDetails/@customer.name"> </a>
&#13;
在控制器中,我得到这样的客户名称:
public ActionResult ViewCustomerDetails(string c_name) {
List<Sale> customerList = new List<Sale>();
customerList = db.Sales.Where(x => x.sale_customer == c_name).ToList();
double total_cash_recieved = 0;
double total_amount = 0;
foreach (var customer in customerList) {
total_cash_recieved = total_cash_recieved + (double)customer.cash_recieved;
total_amount = total_amount = (double)customer.sale_amount;
}
double remaining_balance = total_amount - total_cash_recieved;
ViewBag.TotalAmount = total_amount;
ViewBag.TotalRecieved = total_cash_recieved;
ViewBag.TotalRemaining = remaining_balance;
return View(customerList);
}
&#13;
但问题是,在c_name变量中,我得到了null。 有谁知道如何纠正它或解决方案?
答案 0 :(得分:2)
由于您的参数名称为c_name
,因此您应该将其包含在您的查询字符串中,就像Burak在答案中提到的那样。
如果您愿意,可以使用Html.ActionLink
辅助方法呈现链接。
Html.ActionLink("View","ViewCustomerDetails","Admin",new { c_name=customer.name},null)
或者,如果您希望保留现有的网址,可以将ViewCustomerDetails
方法的参数名称更新为Id
,以便使用默认路由定义,您的未命名参数值将被映射到Id
参数。
public ActionResult ViewCustomerDetails(string id) {
var c_name=id;
// your existing code
}
传递唯一ID( 客户ID 等...)而不是传递名称来显示详细信息总是一个好主意,因为我知道不止一个世界scott
。
答案 1 :(得分:0)
你应该这样发送:
<a href="/Admin/ViewCustomerDetails?c_name=@customer.name"> </a>
确保@customer.name
在转到服务器端之前不为空。
答案 2 :(得分:0)
或者您可以设置到RouteConfig.cs的新路线
routes.MapRoute(
name: "Default2",
url: "Admin/ViewCustomerDetails/{c_name}",
defaults: new { controller = "Admin", action = "ViewCustomerDetails", c_name= UrlParameter.Optional }
);
答案 3 :(得分:0)
您没有将参数传递给控制器。
只要控制器上的操作方法完全符合签名中的相同名称,您就可以随时将参数作为查询字符串的一部分传递。