2013-05-28 25 views
0

我在做一個ASP .NET MVC apllication和我有一些問題: 我有這樣的觀點,即包含一個鏈接到一個動作一個null參數傳遞從模型到一個動作控制器

<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當我點擊進入鏈接。

爲什麼會發生這種情況?我如何糾正它?

回答

2

我的問題是參數s,當我點擊鏈接時它總是空。

因爲您的鏈接看起來像/Client/Passer/123。您可以通過查看生成的HTML,使用Fiddler來調試HTTP請求或在單擊鏈接後查看瀏覽器的地址欄來看到這一點。

Url.Action()的第三個參數routeValues是一個對象,它被映射到被調用的actionmethod的參數。由於您的ActionResult Passer的簽名是string s,因此您需要傳遞一個名爲s的字符串屬性的對象。

所以改變

(object)@s 

new { s = s } 

後者將導致創建一個匿名對象,包含含有的s值的單個string s屬性。你可能想看看你的變量命名。

相關問題