2012-07-05 105 views
0

我有一個問題,從我的視圖傳遞參數到彈出。MVC - 從視圖傳遞參數彈出

在我看來,我有以下剃刀代碼來渲染動作鏈接,其中,當我點擊它,一個彈出窗口將出現:

@Html.ActionLink("[Edit Product]", "Edit", "Products", new { ProductCode = @Model.ProductCode}, new { @class = "editLink" }) 

我不太清楚,如果這是正確的或如果部分new { ProductCode = @Model.ProductCode}是有意義的(請向我解釋那部分是什麼,任何人hihi)。

無論如何,我的彈出代碼接受這樣的參數:

@model MySuperStore.Models.ViewModel.ProductsModel

每當我試圖顯示通過@Mode.ProductCode產品代碼,我總是收到一個錯誤說的引用沒有設置的實例一個東西。

我已經嘗試通過MainView將產品代碼放置在ViewData中,並在彈出窗口中訪問它,但似乎也不起作用。

有人可以幫我嗎?謝謝。乾杯!

回答

1

您的代碼看起來不錯:

@Html.ActionLink(
    "[Edit Product]", 
    "Edit", 
    "Products", 
    new { ProductCode = Model.ProductCode }, 
    new { @class = "editLink" } 
) 

只要確保認爲你是把這個代碼是強類型的,並且是呈現它通過一個實際的模型,它的控制器動作。

至於Edit動作而言,你也應該確保你正在調用您傳遞一個非空模型視圖:

public ActionResult Edit(int productCode) 
{ 
    ProductsModel model = ... fetch your model using the productCode 
    return View(model); 
} 

現在你Edit.cshtml視圖中(或局部視圖,如果你是打開此使用jQuery UI對話框或在彈出)你可以使用該模型的屬性:

@model ProductsModel 
@Html.DisplayFor(x => x.ProductCode)