2016-08-22 53 views
0

我想將序列號(或ESN)從當前頁面傳遞迴新頁面。我試圖通過在第一頁上調用此代碼來實現此目的。在ActionLink上通過控制器傳遞字符串

查看1

@Html.ActionLink("Details", "InventoryDetails", "ItemReconcilliation", new {ESN = mySerialNumber}) 

哪裏mySerialNumber是被證實具有良好的數據的變量。

控制器

public ActionResult InventoryDetails(HistoryModel model, string ESN) 
{ 
    model = new HistoryModel (ESN); 
    return View(model); 
} 

但是,我ESN變量總是回來爲空。我究竟做錯了什麼?

+0

需要[此重載](https://msdn.microsoft.com/en-us/library/system.web.mvc.html.linkextensions.actionlink(V = vs.118) .aspx#M:System.Web.Mvc.Html.LinkExtensions.ActionLink%28System.Web.Mvc.HtmlHelper,System.String,System.String,System.String,System.Object,System.Object%29) –

回答

2

我不知道爲什麼你的方法中有HistoryModel參數,我不認爲你需要它。只需在方法體中創建一個新的HistoryModel。

對於ActionLink的,從內存中,你需要在ActionLink的像這樣結束一個額外的空參數:

@Html.ActionLink("Details", "InventoryDetails", "ItemReconcilliation", new {ESN = mySerialNumber},null) 

,它也能正確顯示。

編輯: 您最初的方法應該是這樣的:

public ActionResult InventoryDetails(string ESN) 
{ 
    HistoryModel viewModel = new HistoryModel(ESN); 
    return View(viewModel); 
} 

其次是這種方法,你實際上是提交表單/模式控制器:

[HttpPost] 
public ActionResult InventoryDetails(HistoryModel viewModel) 
{ 
    //do work with viewModel, such as saving it to the database. 

    return RedirectToAction("Index"); 
} 

如果你想添加一個HTML類/屬性到ActionLink,然後這就是你將用什麼替代null。例如:

@Html.ActionLink("Details","InventoryDetails", "ItemReconcilliation", new { ESN = mySerialNumber }, new { @class = "snazzyCSSStyleClass" }) 
+0

I' m新的MVC/Razor,所以我仍然試圖弄清楚它是如何連接的 - 我會嘗試從方法體中刪除HistoryModel,看看會發生什麼 - 我不需要定義'model'然後在那種情況? 此外,添加額外的空參數工作...任何想法爲什麼,或者爲什麼是這樣的信息的任何鏈接? –

相關問題