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 です。リンクをクリックすると常に null になります。

あなたのリンクは のように見えるからです/Client/Passer/123。これは、生成された HTML を見たり、Fiddler を使用して HTTP 要求をデバッグしたり、リンクをクリックした後にブラウザーのアドレス バーを見たりすることで確認できます。

Url.Action()の 3 番目のパラメーター は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 に答える