2013-07-02 89 views
2

所以我得到這個webproject我的工作,並在4/5的意見即時通訊使用mvc4 ActionLink的傳遞變量

@Html.ActionLink("Back to List", "Index", new { id=Model.ClientID}) 

所有的意見,我回到我的名單exept我的「創建新視圖」 這也將是唯一的看法不加載,給我的「System.NullReferenceException」

我很困惑,爲什麼這是唯一的觀點,不會讓我通過一個clientID到它(因爲我不僅需要它,還需要CountyID創建一個新的縣,並且更多地告訴我它是空的。

如果我刪除上面的代碼行,我的代碼運行良好(顯然,將我的2 ID字段添加到創建視圖中),這讓我覺得它可能是我的控制器。

這裏是得到安寧控制器我的行動創造

// GET: /County/Create 
    public ActionResult Create() 
    { 
     return View(); 
    } 

這裏比較是在同一個控制器

public ActionResult Edit(int id = 0) 
    { 
     dbCounty countys = db.Countys.Find(id); 
     if (countys == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(countys); 
    } 

我也tryed將此代碼添加到新創建的編輯動作actionlink至極當我得到這個錯誤

HTTP Error 404.0 - Not Found 
The resource you are looking for has been removed, had its name changed, or is temporarily   unavailable. 
Most likely causes: 

The directory or file specified does not exist on the Web server. 
The URL contains a typographical error. 
A custom filter or module, such as URLScan, restricts access to the file. 

我在做什麼錯在這裏....

我的項目是建立在一個層次結構模型中,一個客戶端很多Countys(如果你需要更多的代碼,讓我知道)提前

感謝。

提示:

必須有一個理由(我假設)爲什麼刪除此行代碼它工作時(因此它必須是此行的代碼?) - 必須通過不同的方式它(clientID的確實有值1)

@Html.ActionLink("Back to List", "Index", new { id=Model.ClientID}) 

編輯索引控制器需要:

public ActionResult Index([Bind(Prefix="id")] int CID=0) 
    { 
     var clnt = db.Clients.Find(CID); 

     if (clnt != null) 
     { 
      return View(clnt); 
     } 

     return HttpNotFound(); 

    } 

編輯:新創建ACTI從Countys控制器

public ActionResult Create(int id=0) 
    { 
     dbCounty countys = db.Countys.Find(id); 
     if (countys == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(countys); 
    } 

我也有tryed運行

public ActionResult Create(int id=0) 
     { 
     dbClient Client = db.Clients.Find(id); 
     if (Client == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(Client); 
    } 

(因爲我傳遞一個clientId - 模型的構建方式,同時在與這個新行應該添加一個國家ID數據庫與客戶端ID(通過變量)

回答

2

你似乎沒有將模型傳遞到創建視圖。在您的創建控制器中,您需要類似以下內容,其中Client是具有屬性ClientID的對象。

public ActionResult Create() 
{ 
    ... 
    return View(Client); 
} 

編輯:

爲了澄清,在創建視圖,型號是空的,因爲你沒有把它傳遞一個控制器。看看工作的控制器,看看它傳遞給View的是什麼。您需要爲Create創建類似的內容。

+0

ok。所以我在我的索引中放置了@ Html.ActionLink(「創建新的」,「創建」),新的{CID = Model.ClientID}),我跨過clientID爲1,當我點擊它時它炸燬了,沒有給我一個機會進入Countys控制器的創建動作...,雖然我確實改變了我的創建控制器,只需幾秒就可以編輯上述內容 – Pakk

+0

看起來您正處在正確的軌道上,但現在您正在通過id在「索引視圖」中設置爲「CID」,並且在創建控制器中需要一個名爲「id」的int。如果你讓他們一樣,我認爲這應該爲你工作。 – Lily

+0

genious,有點rediculous,你必須通過變量,它期望哈哈,但然後再次從vb.net即時通訊,它從來沒有作出差異,謝謝@lily – Pakk

1

我會盡量總結你的問題。你說,如果你刪除

@Html.ActionLink("Back to List", "Index", new { id=Model.ClientID}) 

沒有errror,當你的看法是產生發生錯誤。這兩個事實意味着,在99%的Model是空

+0

...當然好了讓我檢查即時通訊在那裏,但即時通訊幾乎肯定即時通訊客戶端ID與創建新的動作鏈接從初始索引視圖創建視圖。 – Pakk

0

檢查中

@ Html.ActionLink( 「返回目錄」, 「目錄」,新{ID = Model.ClientID})

型號不爲空,否則您會收到空參考異常