0

我正在做一个 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>

它称之为这个动作:

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

为什么会发生这种情况?我该如何纠正?

4

2 回答 2

2

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

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

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

所以改变

(object)@s

new { s = s }

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

于 2013-05-28T10:29:49.983 回答
1

尝试这个,

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

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

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

于 2013-05-28T10:29:54.110 回答