Asp.net mvc 在asp.net中将字符串从视图发送到控制器

Asp.net mvc 在asp.net中将字符串从视图发送到控制器,asp.net-mvc,Asp.net Mvc,我正试图从视图中获取字符串形式的数据 下面是查看中的代码 您应该这样发送: <a href="/Admin/ViewCustomerDetails?c_name=@customer.name"> </a> 在转到服务器端之前,请确保@customer.name不为空 因为您的参数名是c_name,所以您应该像Burak在回答中提到的那样将其包含在查询字符串中 如果愿意,可以使用Html.ActionLinkhelper方法呈现链接 Html.ActionLink(

我正试图从视图中获取字符串形式的数据

下面是查看中的代码


您应该这样发送:

<a href="/Admin/ViewCustomerDetails?c_name=@customer.name"> </a>


在转到服务器端之前,请确保
@customer.name
不为空

因为您的参数名是
c_name
,所以您应该像Burak在回答中提到的那样将其包含在查询字符串中

如果愿意,可以使用
Html.ActionLink
helper方法呈现链接

Html.ActionLink("View","ViewCustomerDetails","Admin",new { c_name=customer.name},null)
或者,如果您希望保留现有url,可以将
ViewCustomerDetails
方法的参数名称更新为
Id
,以便使用默认路由定义,您未命名的参数值将映射到
Id
参数

public ActionResult ViewCustomerDetails(string id) {
  var c_name=id;
  // your existing code
}

传递一个唯一的Id(客户Id等)而不是传递一个名称来显示细节总是一个好主意,因为我知道世界上不止一个
scott

或者您可以将新路由设置为RouteConfig.cs

routes.MapRoute(
            name: "Default2",
            url: "Admin/ViewCustomerDetails/{c_name}",
            defaults: new { controller = "Admin", action = "ViewCustomerDetails", c_name= UrlParameter.Optional }
        );

您没有将参数传递给控制器


只要控制器上的操作方法希望参数与签名中的名称完全相同,您就可以始终将参数作为查询字符串的一部分进行传递。

也许customer.name设计为唯一的,比如用户名或其他什么?否则你肯定是对的。