MVC - 将参数从视图传递到弹出窗口

时间:2012-07-05 01:15:47

标签: asp.net-mvc view parameters popup viewdata

我在将参数从视图传递到弹出窗口时遇到问题。

在我看来,我有以下剃刀代码来渲染动作链接,当我点击它时,会出现一个弹出窗口:

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

我不太确定这是否正确或部分new { ProductCode = @Model.ProductCode}是否有意义(请向我解释这部分的作用,任何人都喜欢)。

无论如何,我的弹出代码接受如下参数:

@model MySuperStore.Models.ViewModel.ProductsModel

每当我尝试通过@Mode.ProductCode显示ProductCode时,我总是收到错误,指出引用未设置为对象的实例。

我尝试通过MainView将ProductCode放在ViewData中并在弹出窗口中访问它,但这似乎也不起作用。

有人可以帮帮我吗?谢谢。干杯!

1 个答案:

答案 0 :(得分: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对话框或弹出窗口中的某些内容打开此视图),您可以使用模型的属性:< / p>

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