关于c#:将模型中的空参数传递给控制器??中的动作

Passing a null parameter from the model to an action in the controller

我正在做一个 asp .net mvc 应用程序,但我遇到了一些问题:
我有这个视图,其中包含指向操作

的链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<form >
    <fieldset>
        <legend>Formulaire d'un client</legend>
        @if (Model.Count != 0){
       foreach (string s in Model)
    {
    @s
    <br />
      }
        }
        else{
        <label> Pas de projets actuellement</label>
        }
      </fieldset>
  </form>

它调用了这个动作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public ActionResult Passer(string s)
       {


               Upload.Models.ProjetModels prj = new ProjetModels();
               Upload.Models.CompteModels.Id_directory = prj.GetProjectsId(s);
               int _id_directory = Upload.Models.CompteModels.Id_directory;
               int _id_akeo = prj.GetAkeoIdFromProjet(_id_directory);
               int _id_client = Upload.Models.CompteModels.Id_connected;
               Upload.Models.AkeoModels ak = new AkeoModels();
               string _nom_akeo = ak.GetNameAkeoByID(_id_akeo);

               Upload.Models.DetailsModels detail = new DetailsModels { Id_akeo = _id_akeo, Id_client = _id_client, Id_directory = _id_directory, Nom_akeo = _nom_akeo };
               return View(detail);

       }

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

为什么会这样?怎么改?


My problem is the parameter s , it is always null when i click into the link.

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

Url.Action()\\ 的第三个参数routeValues 是一个对象,它映射到被调用的actionmethod 的参数。由于您的 ActionResult Passer\\ 的签名是 string s,因此您需要传递一个具有名为 s.

的字符串属性的对象

所以改变

1
(object)@s

1
new { s = s }

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


试试这个,

1
@Url.Action("Passer","Client", new {s = s})

您没有将参数作为路由值传递。访问链接进行详细说明。

参考:http://msdn.microsoft.com/en-us/library/dd460348(v=vs.108).aspx