C# 将空参数从模型传递到控制器中的操作

C# 将空参数从模型传递到控制器中的操作,c#,asp.net,asp.net-mvc,razor,C#,Asp.net,Asp.net Mvc,Razor,我正在使用asp.net mvc应用程序,但遇到了一些问题: 我有一个包含操作链接的视图 <form > <fieldset> <legend>Formulaire d'un client</legend> @if (Model.Count != 0){ foreach (string s in Model) { <a href="@Url.Action("Passer",

我正在使用asp.net mvc应用程序,但遇到了一些问题: 我有一个包含操作链接的视图

<form >
    <fieldset>
        <legend>Formulaire d'un client</legend>
        @if (Model.Count != 0){
       foreach (string s in Model)
    {
    <a href="@Url.Action("Passer", "Client",(object)@s)"  style="color:blue" >@s</a>
    <br />
      }
        }
        else{
        <label> Pas de projets actuellement</label>
        }
      </fieldset>
  </form>
我的问题是参数
s
,当我点击链接时,它总是
null

为什么会发生这种情况?我怎样才能纠正它

我的问题是参数s,当我点击链接时,它总是空的

因为你的链接看起来像
/Client/Passer/123
。您可以通过查看生成的HTML、使用Fiddler调试HTTP请求或单击链接后查看浏览器的地址栏来了解这一点

的第三个参数,
routeValues
,是一个映射到调用的actionmethod参数的对象。由于
ActionResult传递者的签名是
string s
,因此需要传递一个名为
s
的string属性的对象

所以改变

(object)@s

后者将导致创建一个匿名对象,其中包含一个
字符串s
属性,该属性包含
s
的值。您可能需要查看变量命名

我的问题是参数s,当我点击链接时,它总是空的

因为你的链接看起来像
/Client/Passer/123
。您可以通过查看生成的HTML、使用Fiddler调试HTTP请求或单击链接后查看浏览器的地址栏来了解这一点

的第三个参数,
routeValues
,是一个映射到调用的actionmethod参数的对象。由于
ActionResult传递者的签名是
string s
,因此需要传递一个名为
s
的string属性的对象

所以改变

(object)@s

后者将导致创建一个匿名对象,其中包含一个
字符串s
属性,该属性包含
s
的值。您可能需要查看变量命名。

试试这个

@Url.Action("Passer", "Client", new {s = s})
您没有将参数作为路由值传递。访问链接进行详细说明

参考:

试试这个

@Url.Action("Passer", "Client", new {s = s})
您没有将参数作为路由值传递。访问链接进行详细说明

参考: